我有一个使用--prefix-paths
构建的GatsbyJS静态网站。 pathPrefix
在/environment/test
中设置为gatsby-config.js
。它被部署到运行Traefik的码头工人群中。
将以下标签添加到服务使一切运行正常:
traefik.frontend.rule=PathPrefixStrip:/environment/test
然后我可以浏览/environment/test
并点击我的GatsbyJs网站。
但是我觉得很奇怪,因为后端是用路径前缀构建的。
添加以下标签不起作用:
traefik.frontend.rule=PathPrefix:/environment/test
不应该使用PathPrefix
代替PathPrefixStrip
吗?
答案 0 :(得分:8)
GatsbyJS中的pathPrefix
配置意味着您网站的每个链接都会以/environment/test
为前缀(请参阅documentation),但这并不意味着在运行网站的容器上,该页面实际上托管在此路径上。
在你的情况下,情况似乎并非如此。
这意味着当使用PathPrefixStrip
通过Traefik进行连接时,在浏览器中点击一个链接:
/environment/test/page
/page
/
上提供文件,因此它可以通过页面通过Traefik与PathPrefix
:
/environment/test/page
/environment/test/page
/
上提供文件,因此找不到该页面。因此,您将网站的pathPrefix
设置与提供相同网站的路径混淆。
因此,目前情况的替代方案是在/environment/test/
下为网站提供服务,并使用PathPrefix
与traefik一起使用。