nginx 多个 url 重写

2022-01-24 11:44:08 +08:00
 toyst

我想实现访问

http://a.com/sdf 代理到 http://a.com/hgf

http://a.com/35dg 代理到 http://a.com/54fg2

类似这样的 . . . 我有一个列表,大概 500 行

应该怎么实现呢? 不能写 500 个 location 吧,那样性能会不会很爆炸? 只用 nginx 可以吗?

3226 次点击
所在节点    NGINX
19 条回复
dethan
2022-01-24 11:50:19 +08:00
总得有转发规律吧,没有就维护一个列表?
toyst
2022-01-24 11:51:15 +08:00
@dethan 就是没有规律,否则可以正则了
sadfQED2
2022-01-24 11:54:37 +08:00
500 行写 nginx 炸不了,我见过上万行的 nginx 配置文件
meloncc
2022-01-24 11:59:58 +08:00
迷惑行为,这操作是引流吗?
meloncc
2022-01-24 12:04:22 +08:00
重写是代理的意思吗? 500 个代理炸不了,倒是要注意缓存问题,如果文件乱的话把代理列表分出来。
kiracyan
2022-01-24 12:08:53 +08:00
维护一张表 然后用脚本把这个 nginx 输出出来
wangxn
2022-01-24 12:32:55 +08:00
这不就是那些缩短 API 的服务干的事情吗?为啥不 302 过去?
yernsun
2022-01-24 12:40:04 +08:00
rrfeng
2022-01-24 12:43:41 +08:00
精确匹配的话用 map 就行。性能肯定没问题。

如果想要可扩展可编辑可以 lua
chezs66
2022-01-24 13:28:10 +08:00
这个选型的问题在于变更频率吧?如果写到 ng 配置,变更规则耗时很长吧
none
2022-01-24 13:34:56 +08:00
nginx 的 njs 了解一下,写 js 脚本读取映射文件动态转发请求,这样对 nginx 配置影响最小。
JDog
2022-01-24 13:38:37 +08:00
维护一个 mapping ,写 lua 吧....手写配置文件多呆啊
jakehu
2022-01-24 13:42:19 +08:00
Lua
twinsdestiny
2022-01-24 14:13:29 +08:00
之前公司有看到过,地址维护在 mysql 中,然后 nginx 直接连 mysql 通过参数匹配实际地址,在转发
avv
2022-01-24 15:37:42 +08:00
openresty 值得你拥有
ch2
2022-01-24 15:46:44 +08:00
你太小看 nginx 了吧
firebroo
2022-01-24 16:15:28 +08:00
@JDog 还行啊。。写个 py 脚本生成配置,感觉跟鞋 lua 一样
0ZXYDDu796nVCFxq
2022-01-24 16:27:37 +08:00
map 就行了
如果没有通配、正则,时间复杂度是 O(1),通配和正则的时间复杂度是 O(n)
onhao
2022-01-25 13:56:46 +08:00
直接写在 nginx 配置文件里,不好修改,还是写在程序里好。
我就是这样处理的 https://wuhao.pw/archives/298/
在程序里 做映射 sdf ->hgf 35dg->54fg2

这是一个专为移动设备优化的页面(即为了让你能够在 Google 搜索结果里秒开这个页面),如果你希望参与 V2EX 社区的讨论,你可以继续到 V2EX 上打开本讨论主题的完整版本。

https://www.v2ex.com/t/830235

V2EX 是创意工作者们的社区,是一个分享自己正在做的有趣事物、交流想法,可以遇见新朋友甚至新机会的地方。

V2EX is a community of developers, designers and creative people.

© 2021 V2EX