V2EX = way to explore
V2EX 是一个关于分享和探索的地方
Sign Up Now
For Existing Member  Sign In
NGINX
NGINX Trac
3rd Party Modules
Security Advisories
CHANGES
OpenResty
ngx_lua
Tengine
在线学习资源
NGINX 开发从入门到精通
NGINX Modules
ngx_echo
toyst
V2EX  ›  NGINX

nginx 多个 url 重写

  •  
  •   toyst · Jan 24, 2022 · 4082 views
    This topic created in 1554 days ago, the information mentioned may be changed or developed.

    我想实现访问

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

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

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

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

    19 replies    2022-01-25 13:56:46 +08:00
    dethan
        1
    dethan  
       Jan 24, 2022 via Android
    总得有转发规律吧,没有就维护一个列表?
    toyst
        2
    toyst  
    OP
       Jan 24, 2022
    @dethan 就是没有规律,否则可以正则了
    sadfQED2
        3
    sadfQED2  
       Jan 24, 2022 via Android
    500 行写 nginx 炸不了,我见过上万行的 nginx 配置文件
    meloncc
        4
    meloncc  
       Jan 24, 2022
    迷惑行为,这操作是引流吗?
    meloncc
        5
    meloncc  
       Jan 24, 2022
    重写是代理的意思吗? 500 个代理炸不了,倒是要注意缓存问题,如果文件乱的话把代理列表分出来。
    kiracyan
        6
    kiracyan  
       Jan 24, 2022
    维护一张表 然后用脚本把这个 nginx 输出出来
    wangxn
        7
    wangxn  
       Jan 24, 2022 via Android
    这不就是那些缩短 API 的服务干的事情吗?为啥不 302 过去?
    yernsun
        8
    yernsun  
       Jan 24, 2022   ❤️ 1
    rrfeng
        9
    rrfeng  
       Jan 24, 2022
    精确匹配的话用 map 就行。性能肯定没问题。

    如果想要可扩展可编辑可以 lua
    chezs66
        10
    chezs66  
       Jan 24, 2022
    这个选型的问题在于变更频率吧?如果写到 ng 配置,变更规则耗时很长吧
    none
        11
    none  
       Jan 24, 2022
    nginx 的 njs 了解一下,写 js 脚本读取映射文件动态转发请求,这样对 nginx 配置影响最小。
    JDog
        12
    JDog  
       Jan 24, 2022
    维护一个 mapping ,写 lua 吧....手写配置文件多呆啊
    jakehu
        13
    jakehu  
       Jan 24, 2022
    Lua
    twinsdestiny
        14
    twinsdestiny  
       Jan 24, 2022
    之前公司有看到过,地址维护在 mysql 中,然后 nginx 直接连 mysql 通过参数匹配实际地址,在转发
    avv
        15
    avv  
       Jan 24, 2022
    openresty 值得你拥有
    ch2
        16
    ch2  
       Jan 24, 2022 via iPhone
    你太小看 nginx 了吧
    firebroo
        17
    firebroo  
       Jan 24, 2022
    @JDog 还行啊。。写个 py 脚本生成配置,感觉跟鞋 lua 一样
    0ZXYDDu796nVCFxq
        18
    0ZXYDDu796nVCFxq  
       Jan 24, 2022 via Android
    map 就行了
    如果没有通配、正则,时间复杂度是 O(1),通配和正则的时间复杂度是 O(n)
    onhao
        19
    onhao  
       Jan 25, 2022
    直接写在 nginx 配置文件里,不好修改,还是写在程序里好。
    我就是这样处理的 https://wuhao.pw/archives/298/
    在程序里 做映射 sdf ->hgf 35dg->54fg2
    About   ·   Help   ·   Advertise   ·   Blog   ·   API   ·   FAQ   ·   Solana   ·   971 Online   Highest 6679   ·     Select Language
    创意工作者们的社区
    World is powered by solitude
    VERSION: 3.9.8.5 · 95ms · UTC 19:52 · PVG 03:52 · LAX 12:52 · JFK 15:52
    ♥ Do have faith in what you're doing.