gpt4 book ai didi

docker - 具有多个子域的 Traefik 和具有子路径的 URL

转载 作者:行者123 更新时间:2023-12-02 18:36:05 30 4
gpt4 key购买 nike

设置:带有一个 Traefik 容器、Apache 容器、多个其他容器的 Docker (18.09.6)(例如,在子路径后面运行的搬运工)
Apache 配置为

- traefik.frontend.rule=Host:${hostname},www.${hostname}

搬运工配置有
- traefik.frontend.redirect.regex=^(.*)/portainer$$
- traefik.frontend.redirect.replacement=$$1/portainer/
- "traefik.frontend.rule=PathPrefix:/portainer;ReplacePathRegex: ^/portainer/(.*) /$$1"

Apache 容器正在提供 URL https://hostname例如 https://hostname/test
Portainer 容器通过 https://hostname/portainer 提供服务

设置工作!

现在我想扩展 Apache 容器的子域,例如
- traefik.frontend.rule=Host:${hostname},autoconfig.${hostname},autodiscover.${hostname},mta-sts.${hostname},www.${hostname}

现在发生以下情况:
https://hostname作品
https://hostname/test作品
https://autodiscover.hostname作品

https://hostname/portainer停止工作
根据日志 Traefik 将流量路由到 Apache 容器而不是 Portainer 容器

这是可重现的,并且与多个前端条目相关。我没有找到超过 2 个前端规则的示例
也试过
- traefik.frontend.rule=Host:${hostname},Host:www.${hostname},Host:autoconfig.${hostname}

或者
- traefik.frontend.rule=Host:${hostname};Host:www.${hostname};Host:autoconfig.${hostname}

它没有用...

最佳答案

Ta 回答我自己的问题(感谢 dtomcej,引用 URL https://github.com/containous/traefik/issues/4904)

The issue you are encountering is that you have overlapping rules, and you are not defining any priority to determine order of rule execution.

From the documentation (https://docs.traefik.io/basics/#priorities):

By default, routes will be sorted (in descending order) using rules length

So since you have made the host rule much longer, and it matches, it is the first rule.

You can use the priority label to manually force the match of the portainer path first, before the base host match.

将 traefik.frontend.priority=1 添加到我的 Apache 容器,并将 traefik.frontend.priority=2 添加到包含子路径的所有其他容器。

关于docker - 具有多个子域的 Traefik 和具有子路径的 URL,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/56215523/

30 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com