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