Обратный прокси с именами хостов с Docker compose - PullRequest
1 голос
/ 09 марта 2020

У меня есть 2 API и интерфейс, которые работают в docker контейнерах. Все они могут быть созданы с помощью docker -compose, и у меня есть Nginx обратный прокси-сервер, который должен направить к ним, используя их имена хостов, т.е. api-1.my-project.localhost. На самом деле у меня этот процесс работал, но время от времени, как сегодня утром, я получаю «Несуществующий домен» или «Мы не можем найти этот сайт» при посещении его с использованием этих имен хостов.

Я не верю, что docker-compose.yml так важен, но я включил его здесь:

version: "3.2"
services:
  api-1:
    # Runs on port 5000
    image: my-companies-docker-registry.api-1
  api-2:
    # Runs on port 5000
    image: my-companies-docker-registry.api-2
  main-front-end:
    # Runs on port 3000
    image: my-companies-docker-registry.main-front-end
  my-project:
    image: nginx
    depends_on:
      - api-1
      - api-2
      - main-front-end
    ports:
      - 80:80
    volumes:
      - type: bind
        read_only: true
        source: ./nginx
        target: /etc/nginx

Мой nginx конфиг выглядит так:

events {}
http {
    # Api 1
    upstream api-1{
        server api-1:5000;
    }

    server {
        listen       80;
        server_name  api-1.my-project.localhost;

        location / {
            proxy_pass http://api-1;
        }
    }

    # Api 2
    upstream api-2 {
        server api-2:5000;
    }

    server {
        listen       80;
        server_name  api-2.my-project.localhost;

        location / {
            proxy_pass http://api-2;
        }
    }

    # Main Front end

    upstream main-front-end {
        server main-front-end:3000;
    }

    server {
        listen       80 default_server deferred;
        server_name  my-project.localhost www.my-project.localhost;

        location / {
            proxy_pass http://main-front-end;
            proxy_http_version 1.1;
            proxy_set_header Upgrade $http_upgrade;
            proxy_set_header Connection "Upgrade";
        }
    }
}

Цель это означает, что я могу получить доступ к сайту с помощью http://my-project.localhost, а API-интерфейсы с использованием api-1.my-project.localhost и api-2.my-project.localhost. Поскольку у меня есть listen 80 default_server deferred, посетив http://localhost, я могу нажать nginx, что позволяет мне увидеть мой интерфейсный сайт. Так что docker-compose правильно связал порты.

В прошлом я мог получить доступ к сайтам с использованием суффикса my-project.localhost, но теперь это уже не так. Этот сайт предлагает добавить запись хоста для каждого сайта, я не помню, чтобы делал это раньше, так как есть много сайтов, это заняло бы некоторое время, но возможно, что я сделал, и теперь они имеют были удалены Я также знаю, что Nginx не является docker, поэтому я понятия не имею, как эти имена хостов были бы извлечены и добавлены в процесс разрешения хостов моих машин.

Как это могло работать раньше, а не сейчас ? И как я могу заставить мою установку работать без внесения ручных изменений файла хоста?

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...