我想实现访问
http://a.com/sdf 代理到 http://a.com/hgf
http://a.com/35dg 代理到 http://a.com/54fg2
类似这样的 . . . 我有一个列表,大概 500 行
应该怎么实现呢? 不能写 500 个 location 吧,那样性能会不会很爆炸? 只用 nginx 可以吗?
1
dethan 2022-01-24 11:50:19 +08:00 via Android
总得有转发规律吧,没有就维护一个列表?
|
3
sadfQED2 2022-01-24 11:54:37 +08:00 via Android
500 行写 nginx 炸不了,我见过上万行的 nginx 配置文件
|
4
meloncc 2022-01-24 11:59:58 +08:00
迷惑行为,这操作是引流吗?
|
5
meloncc 2022-01-24 12:04:22 +08:00
重写是代理的意思吗? 500 个代理炸不了,倒是要注意缓存问题,如果文件乱的话把代理列表分出来。
|
6
kiracyan 2022-01-24 12:08:53 +08:00
维护一张表 然后用脚本把这个 nginx 输出出来
|
7
wangxn 2022-01-24 12:32:55 +08:00 via Android
这不就是那些缩短 API 的服务干的事情吗?为啥不 302 过去?
|
8
yernsun 2022-01-24 12:40:04 +08:00 1
|
9
rrfeng 2022-01-24 12:43:41 +08:00
精确匹配的话用 map 就行。性能肯定没问题。
如果想要可扩展可编辑可以 lua |
10
chezs66 2022-01-24 13:28:10 +08:00
这个选型的问题在于变更频率吧?如果写到 ng 配置,变更规则耗时很长吧
|
11
none 2022-01-24 13:34:56 +08:00
nginx 的 njs 了解一下,写 js 脚本读取映射文件动态转发请求,这样对 nginx 配置影响最小。
|
12
JDog 2022-01-24 13:38:37 +08:00
维护一个 mapping ,写 lua 吧....手写配置文件多呆啊
|
13
jakehu 2022-01-24 13:42:19 +08:00
Lua
|
14
twinsdestiny 2022-01-24 14:13:29 +08:00
之前公司有看到过,地址维护在 mysql 中,然后 nginx 直接连 mysql 通过参数匹配实际地址,在转发
|
15
avv 2022-01-24 15:37:42 +08:00
openresty 值得你拥有
|
16
ch2 2022-01-24 15:46:44 +08:00 via iPhone
你太小看 nginx 了吧
|
18
0ZXYDDu796nVCFxq 2022-01-24 16:27:37 +08:00 via Android
map 就行了
如果没有通配、正则,时间复杂度是 O(1),通配和正则的时间复杂度是 O(n) |
19
onhao 2022-01-25 13:56:46 +08:00
直接写在 nginx 配置文件里,不好修改,还是写在程序里好。
我就是这样处理的 https://wuhao.pw/archives/298/ 在程序里 做映射 sdf ->hgf 35dg->54fg2 |