Возникла проблема:Nginx proxy pass configuration docker
Хост-компьютер имеет несколько приложений для докеров, работающих на разных портах, например. App1 @ 3001, App2 @ 3002 ... 3100 и т.д.
Теперь я хотел бы получить доступ к приложениям в этом формате http://hostname.com/app1, http://hostname.com/app2 ..
Для этого я бегу Nginx на хосте для запросов прокси к правому порту на основе суб-Uri
location = /app1 {
proxy_redirect http://hostname:3001/;
include /etc/nginx/proxy_params;
}
location ^~ /app1 {
proxy_redirect http://hostname:3001/app1;
include /etc/nginx/proxy_params;
}
Но это не работает, когда изменения суб Ури сайта или если сайт перенаправляет. Например:
If I visit the site at hostname:3001 -> I can see the site
If I visit the site at http://hostname.com/app1 -> I can see the site
If the site page is at hostname:3001/static/index.html then when i access it as http://hostname.com/app1 the page changes to http://hostname.com/static/index.html -> I get 404.
Есть ли способ сделать это? Или единственный способ сделать это - установить dns как app1.hostname.com и выполнить маршрутизацию на основе имени?
Ваша проблема не связана с Докер или Nginx. Это более общая проблема обратного проксирования с измененным приложением: ваше приложение ожидает, что оно будет использоваться в '/', в то время как обратный прокси-сервер обслуживает его в '/ app1'. Я уверен, что вы можете легко найти описание проблемы и обходные пути. –
Yup Я спросил это долгое время назад. Я исправил это, создав запись DNS для хоста, на котором запущен контейнер, и сопоставьте порт контейнера с портом хоста, а затем добавьте простую конфигурацию к карте nginx app1.abc.com для хостинга: порт в прокси-проходе. Он работал хорошо и легко масштабируется. – NitishMD