LINUX.ORG.RU

Как использовать jwilder/nginx-proxy

 , ,


0

1

На локальной тачке использую compose. Проектов несколько, есть проект с wildcard доменами. В основном в композе nginx и остальные :) Все сервисы проекта в 1-й сетке:

networks:
  ph:
    name: ph
    ipam:
      config:
        - subnet: 192.168.221.0/28
Сервису с nginx всегда указываю статик ip:
    networks:
      ph:
        ipv4_address: 192.168.221.6

B в hosts:

192.168.221.6 domain.loc api.domain.loc panel.domain.loc

Это не напрягает, но вот напряг когда поддоменов куча т.е *.domain.loc.

Решил использовать jwilder/nginx-proxy, вроде по мануалу как два пальца обсосать:

  1. создай контейнер с jwilder/nginx-proxy на порту 80:80
  2. прокинь в контейнер сокет докера
  3. создавай контейнеры с указанием в env VIRTUAL_HOST=.domain.loc 1. запихи контейнеры в одну сетку с контейнером прокси.

Но вот что-то не выходит аленький цветочек.

Создал контейнер с прокси, рестартанул контейнеры приложения, смотрю какой конфиг прокся собрала, а там:

upstream ph.loc {
  # Cannot connect to network of this container
   server 192.168.221.6 down;
}
server {
 server_name ph.loc;
  listen 80 ;
  access_log /var/log/nginx/access.log vhost;
  location / {
   proxy_pass http://ph.loc;
}

Вырубаю записи в /etc/hosts связанные со старой схемой работы топаю на домен ph.loc, не может зарезолвить записи dns. В hosts для домен ph.loc пишу 127.0.0.1 (но лят мне надо *.ph.loc, hosts так не умеет).

curl -I ph.loc #502 Bad Gateway

В логе контейнера proxy:

nginx.1    | 2020/02/13 11:08:09 [error] 73#73: *4 no live upstreams while connecting to upstream, client: 192.168.221.6, server: ph.loc, request: "GET /favicon.ico HTTP/1.1", upstream: "http://ph.loc/favicon.ico", host: "ph.loc", referrer: "http://ph.loc/"
  1. Почему апстирм «даун»?
  2. Что я делаю не так?
  3. Нужен ли мне dns с jwilder/nginx-proxy?

Вообще хотелось прийти к такой схеме работы когда проект разворашивают с нуля:

docker run ... jwilder/nginx-proxy && \
docker-composer ... up -d --build && \
curl -I ANY_DOMAINNAME # 200 Ok

А не лезть в hosts, настраивать локальный dns ставить статический ip контейнеру и т.д. Как достичь такого счастья?

См. в сторону https://github.com/mageddo/dns-proxy-server чтобы не бодаться с /etc/hosts. Я настроил его таким образом что он у меня всегда запущен и используется как системный DNS-сервер. Для wildcard домена есть конфиг, могу поделиться.

xenith
()
Вы не можете добавлять комментарии в эту тему. Тема перемещена в архив.