docker - Traefik v2 反向代理到 Docker 外部的本地服务器

标签 docker docker-compose webserver traefik

我有一个用 Python 编写的简单服务器,它监听专用网络内的端口 8000(HTTP 通信)。现在需要切换到 HTTPS 通信,并且每个向服务器发送请求的客户端都应该使用自己的证书/ key 对进行身份验证。

我决定使用 Traefik v2 来完成这项工作。 Please see the block diagram.

Traefik 作为 Docker 镜像在 IP 为 192.168.56.101 的主机上运行。首先,我想简单地将来自客户端的 HTTP 请求转发到 Traefik,然后转发到在端口 8000 上在 Docker 外部运行的 Python 服务器。当转发正常运行时,我将添加 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"

最佳答案

首先,127.0.0.1 将解析为 traefik 容器,而不是 docker 主机。您需要提供节点的私有(private) IP,并且需要可以从 traefik 容器访问它。

关于docker - Traefik v2 反向代理到 Docker 外部的本地服务器,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/60726886/

相关文章:

用于本地 HTTPS 的 Docker WSL2 SSL 证书

mysql - 在docker容器中导入mysql中的多个数据库模式

sockets - PeopleSoft Webserver 崩溃,失去与 AppServer 的连接

Django 与 Python - 网络服务器

node.js - 访问 cloud9 上的 node/locomotive.js 服务器会重定向到signin.html

powershell - 您的 token 尚未被授予执行此查询所需的范围。 'id' 字段需要以下范围之一 : ['read:packages' ],

linux - 出现未知错误 : Chrome failed to start: exited abnormally.(未知错误:DevToolsActivePort 文件不存在)

docker - docker 容器可以在 `nice` ly 上运行吗?

dns - Docker:为什么/etc/resolv.conf不可读?破坏 DNS

Docker compose 构建错误 - 项目文件不存在