#nginx #docker #docker-compose #reverse-proxy
#nginx #docker #docker-compose #обратный прокси
Вопрос:
Я хотел бы знать, возможно ли использовать nginx с docker compose в качестве шлюза api / обратного прокси-сервера / точки завершения ssl, не предоставляя никаких портов в контейнерах, стоящих за ним. Т. е. я хочу использовать только интрасеть, созданную docker compose, когда контейнеры связаны для связи с nginx. В идеале единственным общедоступным портом будет порт 443 (ssl) в nginx. Это выполнимо? Или я должен предоставлять порты в своих контейнерах?
Ответ №1:
Да, это выполнимо.
Просто определите свое приложение в одном контейнере, а nginx в другом контейнере, оба в одном и том же docker-compose.yml. Свяжите их. И предоставляйте только порт 443 в контейнере nginx.
docker-compose.yml
nginx:
image: nginx
links:
- node1:node1
- node2:node2
- node3:node3
ports:
- "443:443"
node1:
build: ./node
node2:
build: ./node
node3:
build: ./node
Дополнительная информация:http://anandmanisankar.com/posts/docker-container-nginx-node-redis-example /
С уважением
Комментарии:
1. Привет, Карлос, спасибо за быстрый ответ. Как в этом случае будет выглядеть файл nginx.conf? Как бы я проксировал трафик на узлы 1, 2 и 3 вверх по течению без хоста: порт?
2. :-S Я знаю только о связности docker. Я настроил это один раз между nginx и docker registry, но кто-то другой выполнил настройку nginx. Я могу порекомендовать это руководство: anandmanisankar.com/posts / … это полный пример того, что вы ищете.
3. Если вы укажете порт без двоеточия, он все еще будет открыт? Я уже видел это руководство раньше, и мне было интересно, были ли это внутренние или внешние порты
4. @LoganShire если вы будете следовать этой настройке, узлы будут доступны в контейнере nginx по имени хоста. Вы должны иметь возможность просто перенаправить на
node1
, и docker отправит его в нужное место.5. Я полагаю, что так вы, по крайней мере, сможете преобразовать имя хоста
users
в правильный контейнер изнутри контейнера nginx. Должен быть довольно быстрый тест, чтобы попробовать это.