Как использовать nginx в связке с множеством контейнеров?

Добрый вечер! Имеется проект, например:
https://github.com/testdrivenio/django-on-docker (Django, Postgres, Gunicorn, Nginx)
Следуя readme для прода, доступ к сайту можно будет получить по адресу: localhost:1337
Там никаких особо настроек проводить не нужно, почти сразу сайт можно запустить на 1337 порте.

Есть у меня еще отдельный докер-контейнер nginx, который прослушивает порты 80 и 443.
Каким образом я могу его настроить так, чтобы по определенному домену (например, example.com), он перенаправлял запрос на nginx в другом контейнере?

То есть, реальна ли связь между двумя nginx контейнерами? Один передает запрос на другой, а второй обрабатывает его как нужно. Или какая практика лучше используется?
  • Вопрос задан
  • 101 просмотр
Решения вопроса 3
SignFinder
@SignFinder
Wintel\Unix Engineer
Nginx reverse proxy на хосте, которые проксирует запросы в контейнеры.
Ответ написан
@maksam07 Автор вопроса
Решил остановиться на варианте с jwilder/nginx-proxy
Шаги довольно просты, но я почему-то очень долго не мог дойти до конца:
1. Отдельный контейнер для jwilder/nginx-proxy
1.1. Выделяем ему определенную сеть:
...
    networks:
      - nginx_proxy_network


networks:
  nginx_proxy_network:
    external: false
    name: nginx_proxy_network


2. Во втором контейнере (гду крутится Django, Postgres, Gunicorn, Nginx) для сервиса nginx добавляем:
...
    environment:
      - VIRTUAL_HOST=example.com

2.1. Соединяем их в одну сеть:
networks:
  default:
    external:
      name: nginx_proxy_network

2.2. Не забываем в настройках джанго указать новый хост в список разрешенных
2.3. Для Nginx вообще можно убрать внешние и внутренние порты

Дальнейшие настройки по желанию
Большое спасибо Alexey Dmitriev и Сергей Соколов за подсказки. Частично о них я уже знал, но они лишний раз напомнили о них и теперь все получилось
Ответ написан
Пригласить эксперта
Ваш ответ на вопрос

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

Войти через центр авторизации
Похожие вопросы