Аутентификация IP-адреса прокси-сервера Traefik

#docker #docker-compose #docker-swarm #traefik

#docker #docker-создать #docker-swarm #traefik

Вопрос:

У меня есть трафикинг в docker-compose:

  version: '3'
    networks:
      proxy:
        driver: bridge
    services:
      traefik:
        container_name: traefik
        image: traefik:v1.7.9
        command: --api --docker
        ports:
          - "80:80"
          - "443:443"
          - "8080:8080"
        volumes:
          - /var/run/docker.sock:/var/run/docker.sock
          - ./traefik.toml:/etc/traefik/traefik.toml
          - ./acme.json:/acme.json
         networks: 
          - proxy
  

Также есть nginx под mydomain.com и я хочу разрешить подключаться к нему только моему IP-адресу:

 nginx:
    build: ./nginx
    networks:
      - backend
      - traefik_proxy
    restart: always
    labels:
      traefik.enable: "true"
      traefik.port: "80"
      traefik.frontend.headers.allowedHosts: "1.2.3.4" # MyIp
      traefik.frontend.rule: "Host:mysite.com,www.mysite.com"
  

Когда я получаю доступ mysite.com Я получил ошибку Bad Host, и IP в заголовках — это IP моего сервера, а не мой реальный ip.
P.S Docker в режиме роя, но nginx и traefik создают с использованием локального docker-compose

Ответ №1:

Решение состоит в том, чтобы добавить следующие директивы в nginx docker-compose:

 traefik.frontend.whiteList.sourceRange: "1.2.3.4" # my Ip
traefik.frontend.passHostHeader: true
traefik.frontend.whiteList.useXForwardedFor: "true"