找不到包含uri路径部分的nginx变量

时间:2019-09-07 11:44:31

标签: nginx redirect uri

我在NGINX中使用重写指令添加了斜杠。目前,我正在这样做:

# 301 Redirect for trailing slash
location ~ ^([^.]*[^/])$ {
    try_files $request_uri @addslash;
}

# 301 Redirect for trailing slash
location @addslash {
    return 301 $uri/$is_args$args;
}

它可以工作,但仅在端口80上有效。现在,我正在寻找一种方法来重写此构造的第二部分以转发到正确的端口。

我找到了this discussion that explains how to forward to the correct port。但是它并没有按原样转发uri的其余部分。不考虑端口后面的部分。对于我的构造,应该是the "path" portion of the uri

哪个nginx变量仅包含路径部分?或者是uri中的端口之后的所有内容?

并且:有人知道带有示例的nginx变量列表吗? The one from the documentation在这种情况下并没有帮助:-P

1 个答案:

答案 0 :(得分:0)

好吧,对于这个特殊的问题,我找到了答案:

# 301 Redirect for trailing slash
location ~ ^([^.]*[^/])$ {
    try_files $request_uri @addslash;
}

# 301 Redirect for trailing slash
location @addslash {
    return 301 $scheme://$http_host$request_uri/$is_args$args;
}

$ request_uri是我正在寻找的变量。原来我离得很近。

拥有一个带有示例的nginx变量列表仍然很不错,因为nginx似乎使用了与uri规范不同的措辞。