V2EX = way to explore
V2EX 是一个关于分享和探索的地方
现在注册
已注册用户请  登录
NGINX
NGINX Trac
3rd Party Modules
Security Advisories
CHANGES
OpenResty
ngx_lua
Tengine
在线学习资源
NGINX 开发从入门到精通
NGINX Modules
ngx_echo
toyst
V2EX  ›  NGINX

nginx 多个 url 重写

  •  
  •   toyst · 2022-01-24 11:44:08 +08:00 · 2862 次点击
    这是一个创建于 795 天前的主题,其中的信息可能已经有所发展或是发生改变。

    我想实现访问

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

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

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

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

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

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