Traefik 反向代理将 HTTP 请求重定向到与 HTTPS 请求相同的端口

问题描述 投票:0回答:1

www.example.com 指向我的后端服务器的公共IP。我已经在后端服务器上设置了指向不同服务的 NAT 转发规则,因此我想使用 https://www.example.com:/health 被接受,然后重定向到端口 /health

我尝试过使用中间件,但到目前为止还没有成功。

.env:

REGEX_PATTERN=^(https://[^/]+):([^/]+)/?(.*)$
REGEX_REPLACEMENT=$${1}/$${3}:\$${2}`

docker-compose.yml:

services:
  whoami:
    image: "traefik/whoami"
    container_name: "simple-service"
    labels:
      - "traefik.enable=true"
      - "traefik.http.routers.whoami-rule1.rule=Host(`www.example.com`)"
      - "traefik.http.routers.whoami-rule1.entrypoints=websecure"
      - "traefik.http.routers.whoami-rule1.tls.certresolver=myresolver"
      - "traefik.http.routers.whoami-rule1.middlewares=whoami-rule1-port-redirect"
      - "traefik.http.middlewares.whoami-rule1-port-redirect.redirectregex.regex=${REGEX_PATTERN}"
      - "traefik.http.middlewares.whoami-rule1-port-redirect.redirectregex.replacement=${REGEX_REPLACEMENT}"
      - "traefik.http.middlewares.whoami-rule1-port-redirect.redirectregex.permanent=true"

容器构建成功,但 SSL 检查不起作用。

我可以成功卷曲http://www.example.com:7001/health,但是https://www.example.com:7001/health不起作用。我的想法是,端口 7001 可能因不同的容器而异,我想创建一个容器来执行简单的重定向,而不是为每个端口创建一个容器,因为有很多服务(和端口)

我尝试为每个端口创建一个单独的容器,但这会创建太多容器来管理,并且无法在将来对 SSL 问题进行一站式检查。

docker reverse-proxy traefik
1个回答
0
投票

如果您还分享了 traefik 配置的其余部分(您设置

entrypoints
的位置),那就太好了。您实际上正在运行一个
traefik
容器吗?

一般来说,traefik 会监听分配给入口点的端口。通常这意味着 1 个用于

http
(80),1 个用于
https
("websecure", 443)。 使用反向代理的“美妙之处”在于,您可以使用“一个”端口来接受所有流量,然后根据设置的规则(例如通过匹配主机地址)将其转发到适当的容器。 我不知道端口

7001

来自哪里。这是分配给您的

websecure
入口点的端口吗? AFAIK,
whoami
容器侦听端口
80
我还认为不可能通过重定向正则表达式更改端口(同样,这应该不是必需的,因为我们使用的是反向代理)。

© www.soinside.com 2019 - 2024. All rights reserved.