Nginx auto proxy for containers

Редактировал(а) Alexandr Fokin 2024/11/23 17:34

 Данные контейнеры позволяют сравнительно легко организовать проксирование запросов по доменам, расположенном на одном хосте.
 nginx
 
jwilder / nginx-proxy
Контейнер с конфигурацией, позволяющий автоматически обнаруживать контейнеры (используется маркировка) и конфигурировать HTTP reverse proxy.
Выступает в роли общей точки входа (порты 80 и 443), направляет запрос в контейнер обработчик.
Для маршрутизации (и сопоставления) используются домены (предполагает наличие DNS и доменного имени).
В контейнере сервисе необходимо указать домен и порт, он должен иметь общую сеть с proxy.
VIRTUAL_HOST=<домен>
VIRTUAL_PORT=<порт>
jrcs / letsencrypt-nginx-proxy-companion
Контейнер, автоматизирующий процесс подключения SSL сертификата для использования протокола HTTPS.
Работа вместе с nginx-proxy.
Для работы также добавляется еще один маркер, в котором также указан домен.
LETSENCRYPT_HOST=<домен>
 
Использование Docker для настройки обратного прокси Nginx с автоматической генерацией SSL
https://andreyex.ru/linux/ispolzovanie-docker-dlya-nastrojki-obratnogo-proksi-nginx-s-avtomaticheskoj-generatsiej-ssl/
Using Docker to Set up Nginx Reverse Proxy With Auto SSL Generation
https://roman-academy.medium.com/using-docker-to-set-up-nginx-reverse-proxy-with-auto-ssl-generation-3a8a360b69ae
How to bring up a reverse proxy using the jwilder/nginx-proxy
https://docs.exalate.com/docs/scripts-how-to-bring-up-a-reverse-proxy-using-the-jwildernginx-proxy
 
Точка входа - http порты.80, 443
Общая сеть, к которой подключаются контейнеры сервисы.proxyNet
Для persist состояния необходимо определить общие volume. 
Создание внешней общей сети.docker network create proxyNet
Конфигурацию nginx можно увидеть в файле
(отображение правил proxy).
etc/nginx/conf.d/default.conf
Пример маркировки контейнера сервиса.environment:
  - VIRTUAL_HOST=<subdomain.domain>
  - LETSENCRYPT_HOST=<subdomain.domain>
  - VIRTUAL_PORT=8080

networks:
  - "proxyNet"

networks:
 proxyNet:
   external: true
services:

   reverse-proxy:
       image: "jwilder/nginx-proxy:latest"
       container_name: "reverse-proxy"
       volumes:
            - "html:/usr/share/nginx/html"
            - "dhparam:/etc/nginx/dhparam"
            - "vhost:/etc/nginx/vhost.d"
            - "certs:/etc/nginx/certs"
            - "/run/docker.sock:/tmp/docker.sock:ro"
       restart: "always"
       networks:
            - "proxyNet"
       ports:
            - "80:80"
            - "443:443"

   letsencrypt:
       image: "jrcs/letsencrypt-nginx-proxy-companion:latest"
       container_name: "letsencrypt-helper"
       volumes:
            - "html:/usr/share/nginx/html"
            - "dhparam:/etc/nginx/dhparam"
            - "vhost:/etc/nginx/vhost.d"
            - "certs:/etc/nginx/certs"
            - "/var/run/docker.sock:/var/run/docker.sock:ro"
       environment:
           NGINX_PROXY_CONTAINER: "reverse-proxy"
           DEFAULT_EMAIL: "user@domain.ru"
       restart: "always"
       depends_on:
            - "reverse-proxy"
       networks:
            - "proxyNet"
volumes:
 certs:
 html:
 vhost:
 dhparam:

networks:
 proxyNet:
   external: true
  
Теги: