ПРОЕКТЫ 


  АРХИВ 


Apache-Talk @lexa.ru 

Inet-Admins @info.east.ru 

Filmscanners @halftone.co.uk 

Security-alerts @yandex-team.ru 

nginx-ru @sysoev.ru 


  СТАТЬИ 


  ПЕРСОНАЛЬНОЕ 


  ПРОГРАММЫ 



ПИШИТЕ
ПИСЬМА












     АРХИВ :: nginx-ru
Nginx-ru mailing list archive (nginx-ru@sysoev.ru)

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

Re: rewrite для несуществующих файлов



Hello!

On Tue, Oct 11, 2011 at 09:41:27AM -0700, Roman Vasilyev wrote:

> On 10/11/2011 02:24 AM, Igor Sysoev wrote:
> >On Mon, Oct 10, 2011 at 11:48:43AM -0700, Roman Vasilyev wrote:
> >>Попробовал этот вариант, но к сожалению сервер отдает только 301 код.
> >>Но не пишет *Location: http://blah.....* а просто отдает контент этого
> >>документа, может быть можно какнибудь тут исхитриться тоже?
> >У меня в 1.1.5 выдаётся Location.
> Понял свою ошибку
> у меня было написано:
> 
> /blah/blah.html
> как только поменял на
> http://$host/blah/blah.html
> 
> все заработало.
> Но тут возникает следующий вопрос, у меня сервер находится за реверсным 
> прокси, и он может перебивать hostname в урле, соответственно если запрос шел 
> на http://blah/123 а прокси перебил его на http://1.1.1.1/123 то мы вместо 
> *Location: http://blah/blah*,
> выдадим *Location: http://1.1.1.1/blah*, было бы супер не вбивать имя хоста в 
> редиректе выдавая *Location: /blah*. Можно ли это сделать так же элегантно 
> как это записано в вашей строке error_page?

В заголовке Location по стандарту допустим только абсолютный 
путь[1].

Даже если в "rewrite ... redirect" указан относительный путь - 
nginx сделает из него абсолютный (в зависимости от 
server_name_in_redirect/port_in_redirect - слегка по разному).

В случае, когда reverse proxy меняет Host - либо этот proxy должен 
сам заботится о правильной модификации заголовка Location (как 
e.g. nginx, см. директиву proxy_redirect), либо он должен 
как-то передавать исходный Host на бекенд, чтобы бекенд мог 
правильно формировать ссылки (e.g. с помощью админа и строки в 
конфиге бекенда).  Третьего не дано.

[1] http://tools.ietf.org/html/rfc2616#section-14.30

Maxim Dounin

_______________________________________________
nginx-ru mailing list
nginx-ru@xxxxxxxxx
http://mailman.nginx.org/mailman/listinfo/nginx-ru


 




Copyright © Lexa Software, 1996-2009.