nginx 上游配置重定向问题

nginx 上游配置重定向问题

我有一个使用 nginx 和 Plack/Starman 作为上游运行的网站。简单配置如下:

上游 findmjob {
    服务器unix:/tmp/findmjob.sock;
}

服务器 {
  听80;
  服务器名称findmjob.com www.findmjob.com fb.findmjob.com;

  访问日志/findmjob.com/log/access.log;
  错误日志/findmjob.com/log/error.log 信息;

  根/findmjob.com/静态;
  地点 / {
    try_files $uri@proxy;
    访问登录关闭;
    最大有效期限;
  }

  位置@proxy {
        proxy_set_header 主机 $http_host;
        proxy_set_header X-Forwarded-Host $http_host;
        proxy_set_header X-真实IP $remote_addr;
        proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
        proxy_pass http://findmjob;
  }
}

我有一些返回重定向的 perl 代码。这意味着它在 perl/plack 下运行良好:

Faylands-MacbookPro:findmjob.com fayland$ curl -I 'http://findmjob.com:5000/job/GK3bmm+P4RG+2MTa2fVHmw/'
HTTP/1.0 301 已永久移动
日期:2012 年 5 月 1 日星期二 06:14:38 GMT
服务器:HTTP::Server::PSGI
地址:http://findmjob.com/freelance/GK3bmm+P4RG+2MTa2fVHmw
服务器:Perl Dancer 1.3095
内容长度:0
内容类型:text/html;字符集=utf-8
X-Powered-By:Perl Dancer 1.3095

正如你所看到的,它确实是'http://findmjob.com/“”。

但是当我使用 socks 和 nginx 时,它返回类似的内容:

Faylands-MacbookPro:findmjob.com fayland$ curl -I 'http://findmjob.com/job/GK3bmm+P4RG+2MTa2fVHmw/'
HTTP/1.1 301 已永久移动
服务器:nginx/0.7.65
日期:2012 年 5 月 1 日星期二 06:15:20 GMT
内容类型:text/html;字符集=utf-8
连接:保持连接
地址:.com/freelance/GK3bmm+P4RG+2MTa2fVHmw
内容长度:0
X-Powered-By:Perl Dancer 1.3095

http://findmjob被删除了,只剩下.com了?!

非常感谢您的帮助。

更新:升级到最新版本已修复该问题。

Faylands-MacbookPro:findmjob.com fayland$ curl -I 'http://findmjob.com/job/GK3bmm+P4RG+2MTa2fVHmw/'
HTTP/1.1 301 已永久移动
服务器:nginx/1.2.0
日期:2012 年 5 月 1 日星期二 08:22:29 GMT
内容类型:text/html;字符集=utf-8
内容长度:0
连接:保持连接
地址:http://findmjob.com/freelance/GK3bmm+P4RG+2MTa2fVHmw
X-Powered-By:Perl Dancer 1.3095

谢谢

答案1

这是因为您的上游定义为'http://findjob' 默认proxy_redirect

proxy_redirect   http://findjob /;

这意味着 nginx 将删除等于第一个参数的字符串proxy_redirecthttp://findjob) 来自代理Location:

改用proxy_redirect off; 来修复此问题。检查文档了解详情。

相关内容