Docker. Образы - Nginx auto proxy for containers 

Page / - Изменено Alexandr Fokin в 2024/11/23 17:34 

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