Возможно ли заставить Nginx отдавать на реверс-прокси добавленный префикс?
Привет!
Допустим, на сайте site.com есть три сервиса, которые нужно опубликовать так: site.com/service1 site.com/service2 site.com/service3 Все сервисы крутятся в докере и опубликованы через реверс-прокси (traefik). Вопрос - как сделать так, чтобы сервисы можно было оставлять в корневом каталоге /var/www/html, но чтобы Nginx, который используется в качестве веб-движка, отдавал на реверс-прокси не $scheme://$site$request_uri;, а добавленный префикс $scheme://$site/serviceN$request_uri;, чтобы реверс-прокси понимал, куда посылать запрос и откуда приходит ответ? Опубликовать сервисы на поддоменах в сто раз легче, но такой возможности в данном случае нет, нужен именно добавочный URL. |
proxy_pass в location (лучше в префиксном). Там что угодно можно сделать.
|
Про то, что можно "что угодно сделать" я знаю, мне бы пример.
Я пока не очень понимаю, как это работает. Именно, что установка в корне, а надо показать, что оно опубликовано как бы в подкаталоге. Ну вот пример конфига: Код:
server { |
зависит от того, что должен получать реверс-прокси. Простейший случай это
Код:
location /service { |
Реверс-прокси должен получать полный ответ, но с прибавкой /serviceN после домена.
Иными словами, как будто все файлы сервиса лежат в подкаталоге /var/www/html/serviceN, но реально они лежат в /var/www/html. |
proxy_pass - это, похоже, не то, т. к. эта директива передаёт запрос, пришедший на nginx, на другой сервер. Поэтому в случае
Цитата:
|
т.е nginx - это бэкенд за traefik? Тогда непонятно это:
Цитата:
|
Да, nginx - это бэкенд.
Нюанс ещё в том, что в корне тоже находится сервис, и получается так, что /serviceN отвечает на запрос, а реверс-прокси думает, что ответил /, и перебрасывает в корень. Можно ли как-то по-другому разграничивать трафик по контейнерам, заголовки какие-нибудь? |
Время: 21:40. |
Время: 21:40.
© OSzone.net 2001-