Nginx-ru mailing list archive (nginx-ru@sysoev.ru)
[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]
Re: strange redirect
Igor Sysoev wrote:
On Thu, Feb 21, 2008 at 03:05:26PM -0800, Konstantin Svist wrote:
Прошу прощения что продолжаю Вас отвлекать на эту тему, но хочется в
голове всё уложить по порядку :)
http://www.w3.org/Protocols/rfc2616/rfc2616-sec14.html#sec14.23
говорит что "Host" - это domain/port сервера который запрашивается (что
необходимо если сервер виртуальный)
Почему, тогда, этот заголовок изменяется по умолчанию -- и почему только
после этого его всё работает?
По умолчанию он изменяется на $proxy_host, потому что это именно то, что
удалённый сервер обычно ожидает увидеть.
Но всегда-ли "удалённый" сервер ожидает $proxy_host? Какие по этому делу
правила?
У меня стоит Cherrypy (cherrypy.org) и если я оставляю HOST как
$proxy_host, он не может правильно сделать редирект. Он ожидает '/' на
конце URL-а, и если того не указать, он посылает редирект на себя+'/'
Пример #1:
Интернет --> порт 80 (брандмауэр) --> 1080 (nginx) --> 8080 (cherrypy,
внутренний сервер)
Страница http://example.com/foo/
Запрос http://example.com/foo -- без '/'
- proxy_set_header HOST $proxy_host;
ответ: 302 http://example.com:1080/foo/
... страница, естественно, не доступна (т.к. 1080 за брандмауэром)
- proxy_set_header HOST $http_host;
ответ: 302 http://example.com/foo/
... вроде работает
- proxy_set_header HOST $host;
ответ: 302 http://example.com/foo/
... вроде работает
Если бы всё работало, хрен бы с ним.. но вот дальше проблемы:
Пример #2:
Интернет --> порт 80 (брандмауэр) --> 1081 (nginx) -->
rsportscars.com:80 (удалённый сервер, через интернет)
Страница/запрос: http://rsportscars.example.com/
- proxy_set_header HOST $proxy_host;
ответ: 200
... работает
- proxy_set_header HOST $http_host;
301 http://rsportscars.example.com:1081/
... страница не доступна (1081 за брандмауэром)
- proxy_set_header HOST $host;
301 http://rsportscars.example.com:1081/
... страница не доступна (1081 за брандмауэром)
Почему это происходит?
|