我有一个作为 Docker 堆栈运行的 Wordpress 站点。
如果我直接通过 DNAT 访问它(只使用该站点的有效 IP 地址),一切正常。
如果我尝试通过 Traefik 访问它(这样我就可以与其他 HTTP 服务共享一个有效的 IP 地址),我只能访问该站点的主页和同一站点的 Wordpress 管理页面,但对于所有其他常规页面,我会得到一个错误信息如下:
无法连接
Firefox 无法与 192.168.109.236 的服务器建立连接。
共享 Traefik 使用的 IP 地址的其他(非 Wordress)站点工作正常。只有这个 Wordpress 驱动的有这个问题。
192.168.109.236 IP 地址是在 Traefik 中配置为该站点后端的 Docker worker 的地址,您可以在这个traefik.toml片段中看到:
[file]
[frontends]
[frontends.site]
backend = "site"
[frontends.site.routes.site1]
rule = "Host:www.EXAMPLE.com,www.EXAMPLE.com.br,EXAMPLE.com,EXAMPLE.com.br"
[backends]
[backends.site]
[backends.site.loadbalancer.stickiness]
[backends.site.healthcheck]
path = "/"
interval = "10s"
[backends.site.servers.c1]
url = "http://192.168.109.236:9003"
[backends.sita.servers.a1]
url = "http://192.168.109.233:9003"
[backends.site.servers.a2]
url = "http://192.168.109.219:9003"
通过 Traefik 访问时,如何使 Wordpress 链接指向站点 URL 而不是 Docker worker 的 IP 地址?
借助如何修复通过 Traefik 访问时未指向站点 URL 的 Wordpress 链接?我终于找到了使 Wordpress 与 Traefik 完美配合的解决方案:
所以我之前的 traefik.toml 片段现在是:
通过这种方式,Wordpress 无需使用 Docker worker 的 IP 即可获得执行其内部重定向魔法的信息。
要了解passHostHeader以及如何设置它,我必须阅读https://docs.traefik.io/basics/和https://docs.traefik.io/user-guide/examples/并猜测它可以帮助我在这种情况下,Traefik 的文档一如既往地以字谜形式呈现此信息。