Обратный прокси Traefik v2 к локальному серверу за пределами Docker - PullRequest
0 голосов
/ 17 марта 2020

У меня есть простой сервер, написанный на 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:

  • docker -compose.yml
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"
  • traefik.yml
## 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"

1 Ответ

0 голосов
/ 17 марта 2020

Сначала 127.0.0.1 преобразуется в контейнер traefik, а не в хост docker. Вам необходимо предоставить частный IP-адрес узла, и он должен быть доступен из контейнера traefik.

...