Задать вопрос
Vova316
@Vova316

Как перенаправить Nginx на три разных контейнера Docker?

Привет.

У меня на сервере работают три разных контейнера Docker.
Это три разных веб-приложения. Они слушают порты 8080, 5678 и 8999. Тут все хорошо. Я могу проверить это, когда набираю my.site.com:8080, my.site.com:5678 и my.site.com:8999.

Как можно настроить Nginx, что-бы он перенаправлял запросы по следующей схеме:
my.site.com/web1 ----> на порт 8080
my.site.com/web2 ----> на порт 5678
my.site.com/web3 ----> на порт 8999

Пробую так:
server {
    listen 80;
    server_name my.site.com;

    location /web1 {
        proxy_pass http://localhost:8080;
    }
    location /web2 {
        proxy_pass http://localhost:5678;
    }
    location /web3 {
        proxy_pass http://localhost:8999;
    }
}


Однако при переходе на my.site.com/web1, это приложение переходит на свою страницу авторизации:

my.site.com/login

И я получаю:

404 Not Found
nginx/1.24.0 (Ubuntu)

Что мне нужно поменять в настройках Nginx ?
(кэш удаляю, Nginx перезапускаю)
  • Вопрос задан
  • 111 просмотров
Подписаться 1 Средний 7 комментариев
Пригласить эксперта
Ответы на вопрос 2
Каждое из приложений должно понимать, что оно работает по адресу /webX. Если не понимает, возможны перенаправления на url, которые вы не учли. В целом, для современных сложны приложений, так работать не будет.
Ответ написан
Комментировать
ky0
@ky0 Куратор тега Nginx
Миллиардер, филантроп, патологический лгун
Если контейнеры (в том числе nginx) в одной docker-сети, то направлять нужно не по localhost, а по имени контейнера и внутреннему порту.

Если контейнеры нет возможности засунуть в одну сеть - proxy_pass можно направить на host.docker.internal.
Ответ написан
Комментировать
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Похожие вопросы