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 mailing list
nginx-ru@nginx.org
http://mailman.nginx.org/mailman/listinfo/nginx-ru