strange redirect
Konstantin Svist
fry.kun at gmail.com
Tue Feb 26 02:40:20 MSK 2008
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 за брандмауэром)
Почему это происходит?
More information about the nginx-ru
mailing list