【发布时间】:2020-08-03 02:24:24
【问题描述】:
我正在使用 nginx-proxy on docker 等自动化工具构建我的 nginx 配置。他们让我在 location 指令中添加自定义行。
简单地说,我希望 www.example.com 被 301 重定向到 example.com,或者通常 http://www.example.com 和 https://www.example.com 都应该被 301 重定向到 https://example.com。
自动配置创建结果如下:
server {
...
server_name www.example.com;
listen 443 ssl http2 ;
location / {
proxy_pass http://<upstream>;
return 301 $scheme://example.com;
}
}
我注意到 return 301 ... 之前有 proxy_pass 语法,并且由于它是自动创建的,我认为我不能轻易修改它(即让 return 301 出现在 proxy_pass 语法之前。
proxy_pass设置代理服务器的协议和地址以及位置应映射到的可选 URI。
那么,关于 nginx 的问题,因为它说“sets”,301 重定向是否会正确完成,即使重定向是在 proxy_pass 语法之后出现的?
【问题讨论】:
-
这两个语句的顺序并不重要——您的配置文件包含两个相互排斥的语句。但是,Nginx 会在更早的执行阶段评估
return语句,因此应该完全忽略proxy_pass语句。 -
@RichardSmith,再次感谢您的详细回答(评论)!