为什么当PathPrefix不能使用PathPrefixStrip时?

mag*_*ell 3 gatsby traefik

我有一个GatsbyJS静态站点--prefix-paths.将pathPrefix被设置为/environment/testgatsby-config.js.它被部署到运行Traefik的码头工人群中.

将以下标签添加到服务使一切运行正常: traefik.frontend.rule=PathPrefixStrip:/environment/test

然后我可以浏览/environment/test并点击我的GatsbyJs网站.

但是我发现它很奇怪,因为后端是使用路径前缀构建的.

添加以下标签不起作用: traefik.frontend.rule=PathPrefix:/environment/test

不应该用PathPrefix而不是PathPrefixStrip吗?

小智 13

pathPrefixGatsbyJS中的配置意味着您的网站的每个链接都将被添加/environment/test(请参阅文档),但这并不意味着在运行网站的容器上,页面实际上是在此路径上托管的.在你的情况下,似乎并非如此.

这意味着当通过Traefik连接PathPrefixStrip时,在浏览器中单击链接时:

  1. 浏览器请求 /environment/test/page
  2. Traefik将此转换为对容器的请求 /page
  3. 容器实际上是在提供文件,/因此它可以通过页面进行回答

通过Traefik连接时PathPrefix:

  1. 浏览器请求 /environment/test/page
  2. Traefik将此转换为对容器的请求 /environment/test/page
  3. 容器实际上是在提供文件,/因此找不到页面.

因此,您将pathPrefix网站的设置与提供相同网站的路径混淆.

因此,目前情况的替代方案是服务于traefik 下的网站/environment/test/PathPrefix与其一起使用.