3

我使用 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;但它不起作用,我不知道如何有条件地进行重写。

4

2 回答 2

0

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

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

server {
    if ($prepend_app_name) {
        return 301 /$prepend_app_name$uri;
    }
    # ...
}
于 2019-11-17T01:21:38.843 回答
-1

查看评论,如果尝试使用 if 语句,请记住 nginx 文档的建议:https ://www.nginx.com/resources/wiki/start/topics/depth/ifisevil/

于 2019-11-16T23:17:16.503 回答