nginx 反向代理使用 map 重写路径

nginx 反向代理使用 map 重写路径

我正在尝试设置一个 nginx 反向代理,以使用另一个 id(也是域)重写路径中的 id。例如
https://somewhere.com/user/123/setting -->https://somewhere.else.com/user/456/setting
但我在重写部分遇到了困难。有人可以帮忙吗?

map $old_user_id $new_project_id {
    123        456;
    999        9876;
    12         56;
}

server {
    location ~ ^/api/(?<old_project_id>.+)/store {
        rewrite ^/api/[^/]+(/.*)/store ....... # how to rewrite with the map?
        proxy_pass http://somewhere.else.com/;
    }
}

答案1

正则表达式与示例中的 ID 不匹配。
通过更改以下内容,我能够解决我的问题

location ~ ^/api/(?<project_id>.+)/store {
    rewrite ^/user/(.*)/setting /user/$project_id_2/setting break;
    proxy_pass http://host.docker.internal:8080;
}

相关内容