Задать вопрос
EgorkZe
@EgorkZe
iOS (Swift), GoLang

Как настроить Docker для работы nginx reverse proxy сервера c nginx http сервером?

Добрый день! Пытаюсь настроить докер на своем сервера и не совсем выходит. У меня есть несколько контейнеров:
1. Контейнер Ubuntu (который будут использовать другие контейнеры)
2. Контейнер самого сайта (Angular2) плюс nginx, который должен отдавать сайт реверс прокси контейнеру nginx
3. Контейнер nginx_reverse_proxy (Будет забирать сайт из контейнера номер 2 и отдавать юзеру сайт по такому url - site.queryme.ru, если пользователь переходит по queryme.ru без префикса, то ему будет отдаваться обычная index.html заглушка.

Для сборки всех контейнеров я использую docker-compose.
Так вот, docker-compose запускает нормально все контейнеры, и нет ни одной ошибки, когда я перехожу на сайт по адресу queryme.ru то заглушка правильно отдается, если уже я перехожу по
site.queryme.ru то сайт не загружается и в логах ничего нет( мучался с настрйоками, но так ничего не вышло. Вот выложил исходники на github,конфиги можете посмотреть там, буду признателен если поможете Исходники
  • Вопрос задан
  • 6935 просмотров
Подписаться 3 Оценить Комментировать
Решения вопроса 1
@mureevms
Не совсем понятно, Вы проксируете nginx'ом сайт
server_name site.query.ru;
на
proxy_pass http://site;


При этом я не вижу этого имени в правилах сборки docker-compose. Контейнеру надо или назначить имя site, или проксировать на контейнер с Angular2, но его название опять же не объявляется. К тому же, в контейнере query expose'ится порт 8081, а proxy_pass делается на 80.
И еще я не вижу объявление локальной сети докера. Попробуйте сделать примерно так:
networks:
  mynetwork:
    driver: bridge
    ipam:
      driver: default
      config:
        - subnet: 10.10.10.0/24
          ip_range: 10.10.0.0/24
          gateway: 10.10.10.1

services:
  # Контейнер с проксирующим nginx
  nginx:
    container_name: nginx
    build: images/nginx
    networks:
      - mynetwork

  # Контейнер с сайтом
  site:
    container_name: site
    build: images/site
    networks:
      - mynetwork

Порты и volumes намеренно не пишу, добавите сами.

И совсем не понятно зачем Вам два nginx? Какова суть проксирования? (или может я просто не вкурил конфиг)
Ответ написан
Пригласить эксперта
Ответы на вопрос 1
Pinsky
@Pinsky
Кофеиноникотиновая смесь в backend-код
Конфиг для сайта:

server {
 listen 80;
 server_name tender.local;

 location / {
  proxy_pass http://tender:80/;
 }
}


И в докер композе:

frontend:
 build: ./frontend
 volumes: 
 - ./frontend/conf.d:/etc/nginx/conf.d
 - ./frontend/log:/var/log/nginx
 ports:
 - "80:80"
 links:
 - tender

tender:
 build: ./tender
 volumes:
 - ./tender/html:/var/www/html
 - ./tender/log:/var/log/
 links:
 - mysql:dev-mysql
Ответ написан
Комментировать
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Похожие вопросы