如何修复通过 Traefik 访问时 Wordpress 链接未指向网站 URL 的问题?

如何修复通过 Traefik 访问时 Wordpress 链接未指向网站 URL 的问题?

我有一个以 Docker 堆栈运行的 Wordpress 网站。

如果我直接通过 DNAT 访问它(使用仅针对此站点的有效 IP 地址),一切都正常运行。

如果我尝试通过 Traefik 访问它(这样我就可以与其他 HTTP 服务共享有效的 IP 地址),我只能访问该网站的主页和同一网站的 Wordpress 管理页面,但对于所有其他常规页面,我都会收到如下错误消息:

无法连接

Firefox 无法与 192.168.109.236 的服务器建立连接。

共享 Traefik 所用 IP 地址的其他(非 Wordress)网站运行正常。只有这个 Wordpress 驱动的网站存在此问题。

192.168.109.236 IP 地址是 Traefik 中配置为此站点后端的 Docker 工作程序的地址,如您所见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 地址?

答案1

如何修复通过 Traefik 访问时 Wordpress 链接未指向网站 URL 的问题?我最终找到了让 Wordpress 与 Traefik 良好配合的解决方案:

passHostHeader = true

所以我之前的 traefik.toml 代码片段现在是:

 [file]
   [frontends]
     [frontends.site]
       backend = "site"
       passHostHeader = true
       [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"

这样,Wordpress 就可以获得信息来执行其内部重定向魔法,而无需使用 Docker 工作者的 IP。

了解详情传递主机头以及如何设置它,我必须阅读两者https://docs.traefik.io/basics/https://docs.traefik.io/user-guide/examples/我想它可以在这种情况下帮助我,因为 Traefik 的文档像往常一样以字谜形式呈现此信息。

相关内容