Nginx有条件重写uri

问题描述 投票:3回答:2

我将nginx用作多个Rails应用程序的反向代理(使用Nixy)。如果缺少,我需要重写一些请求以在url前面插入字符串。

例如:如果我有http://proxy_ip/app_name/some/root,我什么都不想修改,但是如果我有http://proxy_ip/some/root,我想在http://proxy_ip/app_name/some/root

中进行转换

我尝试过rewrite ^ /app_name/$uri;,但是它不起作用,而且我也不知道如何有条件地进行重写。

nginx nginx-location nginx-reverse-proxy
2个回答
0
投票

您可以使用地图来检测缺少的应用程序名称,然后使用缺少的应用程序名称返回301。

map $uri $prepend_app_name {
    ~^/some/root(/.*)?$ app_name;
}

server {
    if ($prepend_app_name) {
        return 301 /$prepend_app_name$uri;
    }
    # ...
}

-1
投票

查看注释,以防if语句,请记住nginx文档的建议:https://www.nginx.com/resources/wiki/start/topics/depth/ifisevil/

© www.soinside.com 2019 - 2024. All rights reserved.