Используйте nginx на маршруте и трафик для субдомена - PullRequest
0 голосов
/ 09 июня 2018

Как будет выглядеть файл docker-compose и конфигурация nginx, если я хочу использовать traefik для прокси-запросов для моих поддоменов и использовать nginx в моем корне.

Итак, я хочу подать некоторые статические файлы в: domain.com с использованием nginx, но я хочу, чтобы traefik обрабатывал трафик на: app.domain.com, app2.domain.com

вот что у меня есть в моем файле композитора ....

version: '3'

networks:
  proxy:
    external: true
  internal:
    external: false
services:
  traefik:
    image: traefik:alpine
    ports:
      - "8080:8080"
      - "80:80"
      - "443:443"
    restart: always
    labels:
      - logLevel="DEBUG"
      - "traefik.backend=monitor"
      - "traefik.frontend.rule=Host:monitor.domain.com"
      - "traefik.port=8080"
      - "traefik.frontend.entryPoints=http,https"
      - "traefik.enable=true"
    volumes:
      - "/var/run/docker.sock:/var/run/docker.sock"
      - "./traefik.toml:/traefik.toml"
      - "./acme.json:/acme.json"
    expose:
      - "8080"
    networks:
      - internal
      - proxy
  custom-badge:
    image: app
    environment:
      PORT: 3000
    ports:
      - "3000:3000"
    labels:
      - traefik.enabled=true
      - traefik.backend=custom-badge
      - traefik.frontend.rule=Host:app.domain.com
      - traefik.docker.network=proxy
      - traefik.port=3000
    networks:
      - internal
      - proxy
  server:
    image: nginx:alpine
    ports:
       - "80:80"
    labels:
      - traefik.enabled=true
      - traefik.backend=
      - traefik.frontend.rule=domain.com
      - traefik.docker.network=proxy
      - traefik.port=80
    volumes:
      - "./apps/root:/etc/nginx/html:ro"
      - "./nginx.conf:/etc/nginx/nginx.conf:ro"
    environment:
      - NGINX_HOST=domain.com
      - NGINX_PORT=80
    command: [nginx-debug, '-g', 'daemon off;']
    depends_on:
      - traefik

и мой nginx.conf

    http {
      server {
        listen          80;
        server_name     domain.com www.domain.com;
        location / {
            proxy_pass  domain.com:80/;
        }
      }
    }

Я получаю ошибки конфликта портов, что я делаю не так?

1 Ответ

0 голосов
/ 09 июня 2018

У вас не может быть двух сервисов - traefik и nginx используют один и тот же порт хоста.

У вас должен быть только один сервис, прослушивающий 80 портов.в случае отсутствия субдомена перенаправьте на nginx - и что я вижу - вы сделали.

Чтобы исправить ошибку, просто удалите раздел порта из определения службы сервера (nginx).

...