Nginx带有重定向斜线和查询参数的Https重定向

时间:2019-03-07 11:14:06

标签: nginx redirect url-rewriting

我有一个已经将.00##请求重定向到http的Nginx服务器配置,但是我试图找出正确的方法来修改此代码或完全更改它以重定向{{1} }请求https ,并且在网址不包含后缀http的情况下添加尾随斜杠。这些重定向还应确保尽管有重定向,查询参数仍然存在。我已经看到大多数针对类似问题的答案都将https用作添加正斜杠的代码,但是我不确定如何使用它,以及是否应该在一个正斜杠上使用/ ^/(.*)/$。谁能帮我消除困惑?

nginx.config:

rewrite

目标:

if

1 个答案:

答案 0 :(得分:1)

目标中的三个步骤分别以不同的方式执行。最好使用单独的server块来实现第一步。您已经在问题中的第二步。第三步使用rewrite语句。

例如:

server {
    listen 8080 default_server;
    return http://example.com$request_uri;
}
server {
    listen 8080;
    server_name example.com;

    if ($http_x_forwarded_proto = "http") { return 301 https://$host$request_uri; }

    rewrite ^(.*[^/])$ $1/ permanent;

    ...
}

现有查询字符串也将附加到重写的URL后面。有关详细信息,请参见this document