У меня есть простой сервер, написанный на Python, который прослушивает порт 8000 в частной сети (HTTP-связь). Теперь требуется переключиться на связь HTTPS, и каждый клиент, отправляющий запрос на сервер, должен пройти проверку подлинности с помощью своей собственной пары сертификат / ключ.
Я решил использовать Traefik v2 для этой работы. См. Блок-схему.
Traefik работает как Docker образ на хосте с IP 192.168.56.101. Сначала я хотел просто перенаправить HTTP-запрос от клиента в Traefik, а затем на сервер Python, работающий за пределами Docker на порту 8000. Я бы добавил функциональность TLS, когда пересылка работает правильно.
Однако я не могу понять, как настроить Traefik для обратного прокси-сервера, например, 192.168.56.101/notify?wrn=1
на Python сервер 127.0.0.1:8000/notify?wrn=1
.
Когда я пытаюсь отправить вышеупомянутый запрос на сервер (curl "192.168.56.101/notify?wrn=1"
) я получаю " Bad Gateway " в качестве ответа. Что мне здесь не хватает? Это первый раз, когда я общаюсь с Docker и обратным прокси / Traefik. Я считаю, что это как-то связано с портами, но я не могу понять это.
Вот моя конфигурация Traefik:
version: "3.3"
services:
traefik:
image: "traefik:v2.1"
container_name: "traefik"
hostname: "traefik"
ports:
- "80:80"
- "8080:8080"
volumes:
- "/var/run/docker.sock:/var/run/docker.sock:ro"
- "./traefik.yml:/traefik.yml:ro"
## STATIC CONFIGURATION
log:
level: INFO
api:
insecure: true
dashboard: true
entryPoints:
web:
address: ":80"
providers:
docker:
watch: true
endpoint: "unix:///var/run/docker.sock"
file:
filename: "traefik.yml"
## DYNAMIC CONFIGURATION
http:
routers:
to-local-ip:
rule: "Host(`192.168.56.101`)"
service: to-local-ip
entryPoints:
- web
services:
to-local-ip:
loadBalancer:
servers:
- url: "http://127.0.0.1:8000"