Re: помогите с проксированием
Maxim Dounin
mdounin на mdounin.ru
Пн Ноя 13 13:25:34 UTC 2017
Hello!
On Mon, Nov 13, 2017 at 12:08:14PM +0300, Иван Мишин wrote:
> Я догадываюсь какие модули нужны, но все мои попытки реализовать задачу
> провалились.
> Может ли кто-то подсказать более точнее?
Более точнее так:
- В простейшем случае задача сводится к тому, чтобы сделать
proxy_pass внутри соответствующего location'а:
location /site1/ {
proxy_pass http://xyz.com/;
}
Тут важно обратить внимание на "/" в proxy_pass - он говорит
nginx'у, что при проксировании следует менять префикс "/site1/" в
исходном URI запроса на "/".
Так будет работать, если бэкенд использует относительные адреса
для ресурсов, возвращает предсказуемые перенаправления (см.
proxy_redirect) и так далее.
- В наиболее сложном случае абсолютные адреса оказываются зашиты
не только в возвращаемых html-страницах (которые, при желании,
можно пытаться править с помощью sub_filter), но и в каких-нибудь
бинарных/проприетарных swf-файлах. И поставленная задача вообще
не решается.
Где именно между этими крайними положениями находится ваш сайт -
известно только вам. А если не известно - то и выяснять,
соответственно, вам. Постепенно дополняя простейшую конфигурацию
выше различными подпорками для решения возникающих проблем.
Ну и не следует забывать, что в общем случае - задача не решается.
И где-то в тот момент, когда возникает необходимость менять
содержимое возвращаемых страниц с помощью sub_filter - имеет смысл
задуматься о том, чтобы пойти и переделать бэкенд. Или даже не
переделать, а просто разобраться с ним чуть получше - часто
бывает, что бэкенд всё умеет, просто его нужно соответствующим
образом сконфигурировать.
--
Maxim Dounin
http://mdounin.ru/
Подробная информация о списке рассылки nginx-ru