Назад | Перейти на главную страницу

Проблема перенаправления nginx с конфигурацией восходящего потока

У меня есть веб-сайт, работающий с nginx и Plack / Starman в качестве восходящего потока. простая конфигурация выглядит так:

upstream findmjob {
    server unix:/tmp/findmjob.sock;
}

server {
  listen       80;
  server_name findmjob.com www.findmjob.com fb.findmjob.com;

  access_log /findmjob.com/log/access.log;
  error_log  /findmjob.com/log/error.log info;

  root /findmjob.com/static;
  location / {
    try_files $uri @proxy;
    access_log off;
    expires max;
  }

  location @proxy {
        proxy_set_header Host $http_host;
        proxy_set_header X-Forwarded-Host $http_host;
        proxy_set_header X-Real-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 Moved Permanently
Date: Tue, 01 May 2012 06:14:38 GMT
Server: HTTP::Server::PSGI
Location: http://findmjob.com/freelance/GK3bmm+P4RG+2MTa2fVHmw
Server: Perl Dancer 1.3095
Content-Length: 0
Content-Type: text/html; charset=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 Moved Permanently
Server: nginx/0.7.65
Date: Tue, 01 May 2012 06:15:20 GMT
Content-Type: text/html; charset=utf-8
Connection: keep-alive
Location: .com/freelance/GK3bmm+P4RG+2MTa2fVHmw
Content-Length: 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 Moved Permanently
Server: nginx/1.2.0
Date: Tue, 01 May 2012 08:22:29 GMT
Content-Type: text/html; charset=utf-8
Content-Length: 0
Connection: keep-alive
Location: http://findmjob.com/freelance/GK3bmm+P4RG+2MTa2fVHmw
X-Powered-By: Perl Dancer 1.3095

Спасибо

Это потому, что ваш апстрим определен как 'http: // findjob'и по умолчанию для proxy_redirect является

proxy_redirect   http://findjob /;

А это означает, что nginx удалит строку, равную первому аргументу, в proxy_redirect (http: // findjob) из прокси Location:.

Использовать proxy_redirect off; вместо этого, чтобы исправить эту проблему. Проверьте документация для подробностей.