为什么 PathPrefixStrip 有效而 PathPrefix 无效?
Why does PathPrefixStrip work when PathPrefix won't?
我有一个使用 --prefix-paths
构建的 GatsbyJS 静态站点。 pathPrefix
在 gatsby-config.js
中设置为 /environment/test
。它被部署到 docker 集群 运行ning Traefik。
向服务添加以下标签使一切正常 运行:
traefik.frontend.rule=PathPrefixStrip:/environment/test
然后我可以浏览到 /environment/test
并在我的 GatsbyJs 站点中点击。
但是我觉得很奇怪,因为后端是用路径前缀构建的。
添加以下标签不起作用:
traefik.frontend.rule=PathPrefix:/environment/test
它不应该与 PathPrefix
一起使用而不是 PathPrefixStrip
吗?
GatsbyJS 中的 pathPrefix
配置意味着你的网站的每个 link 都会以 /environment/test
为前缀(参见 documentation),但这并不意味着在容器 运行 网站,页面实际上托管在这个路径上。
你的情况好像不是这样。
这意味着当通过 Traefik 与 PathPrefixStrip
连接时,当您在浏览器中单击 link:
- 浏览器请求
/environment/test/page
- Traefik 将此转换为对
/page
容器的请求
- 容器实际上在
/
上提供文件,所以它用页面 回答
当通过 Traefik 与 PathPrefix
连接时:
- 浏览器请求
/environment/test/page
- Traefik 将此转换为对
/environment/test/page
容器的请求
- 容器实际上在
/
上提供文件,所以找不到页面。
因此,您将网站的 pathPrefix
设置与提供同一网站的路径混淆了。
当前情况的替代方案是在 /environment/test/
下为网站提供服务并使用 PathPrefix
和 traefik。
我有一个使用 --prefix-paths
构建的 GatsbyJS 静态站点。 pathPrefix
在 gatsby-config.js
中设置为 /environment/test
。它被部署到 docker 集群 运行ning Traefik。
向服务添加以下标签使一切正常 运行:
traefik.frontend.rule=PathPrefixStrip:/environment/test
然后我可以浏览到 /environment/test
并在我的 GatsbyJs 站点中点击。
但是我觉得很奇怪,因为后端是用路径前缀构建的。
添加以下标签不起作用:
traefik.frontend.rule=PathPrefix:/environment/test
它不应该与 PathPrefix
一起使用而不是 PathPrefixStrip
吗?
GatsbyJS 中的 pathPrefix
配置意味着你的网站的每个 link 都会以 /environment/test
为前缀(参见 documentation),但这并不意味着在容器 运行 网站,页面实际上托管在这个路径上。
你的情况好像不是这样。
这意味着当通过 Traefik 与 PathPrefixStrip
连接时,当您在浏览器中单击 link:
- 浏览器请求
/environment/test/page
- Traefik 将此转换为对
/page
容器的请求
- 容器实际上在
/
上提供文件,所以它用页面 回答
当通过 Traefik 与 PathPrefix
连接时:
- 浏览器请求
/environment/test/page
- Traefik 将此转换为对
/environment/test/page
容器的请求
- 容器实际上在
/
上提供文件,所以找不到页面。
因此,您将网站的 pathPrefix
设置与提供同一网站的路径混淆了。
当前情况的替代方案是在 /environment/test/
下为网站提供服务并使用 PathPrefix
和 traefik。