#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"