Можете ли вы использовать nginx обратный прокси для контейнеров docker без предоставления каких-либо портов?

#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. Должен быть довольно быстрый тест, чтобы попробовать это.