【问题标题】:nginx - proxy_pass with return 301 redirectnginx - 带有返回 301 重定向的 proxy_pass
【发布时间】:2020-08-03 02:24:24
【问题描述】:

我正在使用 nginx-proxy on docker 等自动化工具构建我的 nginx 配置。他们让我在 location 指令中添加自定义行。

简单地说,我希望 www.example.com 被 301 重定向到 example.com,或者通常 http://www.example.comhttps://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 语法之前。

来自nginx documentation

proxy_pass

设置代理服务器的协议和地址以及位置应映射到的可选 URI。

那么,关于 nginx 的问题,因为它说“sets”,301 重定向是否会正确完成,即使重定向是在 proxy_pass 语法之后出现的?

【问题讨论】:

  • 这两个语句的顺序并不重要——您的配置文件包含两个相互排斥的语句。但是,Nginx 会在更早的执行阶段评估return 语句,因此应该完全忽略proxy_pass 语句。
  • @RichardSmith,再次感谢您的详细回答(评论)!

标签: nginx jwilder-nginx-proxy


【解决方案1】:

根据 RichardSmith 的评论,据说 return 语法将首先被评估,因此 proxy_pass 被完全忽略。

【讨论】:

    猜你喜欢
    • 2018-12-20
    • 1970-01-01
    • 2013-06-04
    • 2012-02-27
    • 2021-08-04
    • 2019-04-01
    • 2018-11-06
    • 2016-04-12
    • 2020-10-29
    相关资源
    最近更新 更多