Re: Как удержать проксирование в пределах поддиректории сайта (proxy redirect не срабатывает) ?

Maxim Dounin mdounin at mdounin.ru
Tue Dec 3 13:00:32 UTC 2013


Hello!

On Tue, Dec 03, 2013 at 07:09:40AM -0500, Dmitriy_K wrote:

> Здесь в конференции неоднократно поднималась проблема перескока
> проксирования за пределы location, в которой оно производится: 
> http://forum.nginx.org/read.php?21,240642,240642#msg-240642
> http://forum.nginx.org/read.php?11,239231,239231#msg-239231
> http://forum.nginx.org/read.php?21,242647,242671#msg-242671
> 
> Просьба к светочам нашей жизни внести ясность по данному поводу.
> Возможно, можно что-то придумать с корректировкой заголовков (через
> subs_filter?) или с реврайтами.
> Пожалуйста, помогите разобраться!

В общем случае - если бекенд не знает, по какому адресу на себя 
ссылаться, и при этом ссылается - то проксирование невозможно.  
Пример: бекенд возвращает swf и/или любой другой бинарный файл 
неизвестной структуры, в котором зашит неправильный адрес.

В более частных случаях - работают решения, предусматривающие 
минимальное вмешательство в ответы бекенда, такие как 
proxy_redirect (+ proxy_cookie_*).  В этом случае ответ меняется 
на уровне заголовков.

Если в вашем случае proxy_redirect не хватает, то можно пытаться 
ходить в сторону замены адресов в возвращаемом ответе (sub_filter 
и т.п.).  Но единственное гарантированно работающее решение - 
пойти на бекенд и объяснить ему, как на себя следует ссылаться.  

Я лично крайне не рекомендую пытаться делать замены в ответах.  
Либо надо сводить задачу к решаемой с помощью замен в заголовках 
(обычно для этого бывает достаточно отказаться от изменения пути  
при проксировании - либо использовав отдельный домен, либо 
использовав нужный префикс на бекенде), либо объяснять бекенду, 
как правильно на себя ссылаться.

[...]

-- 
Maxim Dounin
http://nginx.org/en/donation.html



Подробная информация о списке рассылки nginx-ru