Docker compose & nginx сетевых имен хостов - PullRequest
0 голосов
/ 07 апреля 2020

У меня есть следующая конфигурация:

  • nginx, запущенный docker файлом для создания, действующим в качестве обратного прокси-сервера // конечная точка ssl
  • служба приложения, запущенная другим docker создать (по соображениям модульности) файл, обслуживающий приложение
  • reverse_proxy и app_service подключены через app_network

Поскольку они подключены через app_network, Я могу обратиться к app_service в конфигурации nginx как http://app_service:8080, что приятно, потому что мне не нужно выставлять порты в самой службе приложения.

К сожалению, nginx не запустится, пока я не вызову контейнер службы приложений, потому что он проверяет наличие имени хоста app_service при запуске.

Как я могу помешать nginx проверять имя хоста при запуске, возможно, вызывая Bad Gateway ошибка при попытке подключения, когда app_service еще не запущен?

Файлы конфигурации для справки:

# reverse proxy docker-compose.yml
version: '3'
services:
  reverse_proxy:
    restart: always
    container_name: reverse_proxy
    image: nginx
    ports:
      - 80:80
      - 443:443
    volumes:
      - /srv/docker/nginx/config:/etc/nginx
      - /srv/ssl:/srv/ssl

    networks:
  default:
    external:
      name: app_network
# application service docker-compose.yml
version: '3'

services:
  app_service:
    restart: always
    container_name: app_service
    image: <my_app_image>

networks:
  default:
    external:
      name: app_network
# nginx config
server {

    listen 443 ssl http2;
    listen [::]:443 ssl http2;

    server_name app.example.com;

    location / {
        proxy_pass http://app_service:8080;
        include proxy.conf;
    }
    ssl_certificate /srv/ssl/<mycert>.crt;
    ssl_certificate_key /srv/ssl/<mykey>.key;
}

1 Ответ

0 голосов
/ 07 апреля 2020

Вот способ, который работал для меня:



    # nginx config
    server {

        listen 443 ssl http2;
        listen [::]:443 ssl http2;

        server_name app.example.com;

        location / {
            set $upstream app_service:8080;

            proxy_pass $upstream;
            include proxy.conf;
        }
        ssl_certificate /srv/ssl/.crt;
        ssl_certificate_key /srv/ssl/.key;
    }

Это приводит к сообщению 502 Bad Gateway, если хост недоступен и не проверяет доступность при запуске.

...