V2EX = way to explore
V2EX 是一个关于分享和探索的地方
现在注册
已注册用户请  登录
hhhhhh123
V2EX  ›  程序员

nginx 如何 配置路径以**开头

  •  
  •   hhhhhh123 · 2022-07-18 17:52:13 +08:00 · 1721 次点击
    这是一个创建于 850 天前的主题,其中的信息可能已经有所发展或是发生改变。

    如题 我要配置以 api 开头的路径 例子 1 http://localhost/api/a 例子 2 http://localhost/api/a/b/c

    location ^~ /api/ { proxy_pass http://localhost:5000/test; }

    已经尝试网上很多方法了 但是还是不行 。

    第 1 条附言  ·  2022-07-19 09:40:32 +08:00
    其实我是想实现这样的功能。

    request 1: http://localhost/xx/a
    proxy_pass: http://1111.com/xx/a
    request 2: http://localhost/xx/b/c
    proxy_pass: http://11111.com/xx/b/c



    request 1: http://localhost/yy/a
    proxy_pass: http://2222.com/yy/a

    request 2: http://localhost/yy/a/b/c
    proxy_pass: http://2222.com/yy/a/b/c

    其实就是根据路径的第一个参数进行分流
    第 2 条附言  ·  2022-07-19 10:15:53 +08:00
    问题已经解决了。 是个人问题.. 然后提问的 代码参数没有问题 。3Q. guys
    9 条回复    2022-07-19 10:10:23 +08:00
    xiaoriri666
        1
    xiaoriri666  
       2022-07-18 18:16:12 +08:00
    location ^~/api/ {
    proxy_pass http://127.0.0.1:30003/;
    }

    试试这个呢,~中间没有空格
    Seanfuck
        2
    Seanfuck  
       2022-07-18 18:19:44 +08:00
    是不是配置里面有 if 条件,if 的优先级比 location 高,要把 if 放在 location / {} 里。
    hatebugs
        3
    hatebugs  
       2022-07-18 19:34:14 +08:00 via iPhone
    开 debug 日志看匹配到哪个 location 了
    killva4624
        4
    killva4624  
       2022-07-18 21:29:04 +08:00
    把完整的配置文件贴出来。
    Martens
        5
    Martens  
       2022-07-18 22:05:29 +08:00
    nginx 是返回 404 ?还是 502 ?

    如果是 404 ,那么 404 是你后端返回的吗?

    如果是加一个重写规则:rewrite ^/api/(.*)$ /$1 break;
    hhhhhh123
        6
    hhhhhh123  
    OP
       2022-07-19 09:28:25 +08:00
    @xiaoriri666 这个不行
    hhhhhh123
        7
    hhhhhh123  
    OP
       2022-07-19 09:28:48 +08:00
    @Seanfuck 还没写 if 呢 目前就是 默认配置 然后这是第一个 location
    hhhhhh123
        8
    hhhhhh123  
    OP
       2022-07-19 09:29:16 +08:00
    @Martens 返回 404 ,不过这个 404 不是后端返回的 ,
    hhhhhh123
        9
    hhhhhh123  
    OP
       2022-07-19 10:10:23 +08:00
    @Martens 看了下 服务端的日志,404 是服务端出来的 proxy_pass http://localhost:5000/test;我以为这行代码 不会进行将上面多余的路径加上来, 请求进来居然是 /testa, /testa/b/c
    关于   ·   帮助文档   ·   博客   ·   API   ·   FAQ   ·   实用小工具   ·   3380 人在线   最高记录 6679   ·     Select Language
    创意工作者们的社区
    World is powered by solitude
    VERSION: 3.9.8.5 · 25ms · UTC 04:46 · PVG 12:46 · LAX 20:46 · JFK 23:46
    Developed with CodeLauncher
    ♥ Do have faith in what you're doing.