【问题标题】:Why does PathPrefixStrip work when PathPrefix won't?为什么 PathPrefixStrip 在 PathPrefix 不起作用时起作用?
【发布时间】:2018-05-15 08:54:29
【问题描述】:

我有一个使用 --prefix-paths 构建的 GatsbyJS 静态站点。 pathPrefixgatsby-config.js 中设置为/environment/test。它被部署到运行 Traefik 的 docker swarm。

在服务中添加以下标签可以让一切正常运行: traefik.frontend.rule=PathPrefixStrip:/environment/test

然后我可以浏览到/environment/test 并在我的 GatsbyJs 网站中四处点击。

但是我觉得很奇怪,因为后端是使用路径前缀构建的。

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

不应该使用PathPrefix 而不是PathPrefixStrip吗?

【问题讨论】:

    标签: traefik gatsby


    【解决方案1】:

    GatsbyJS 中的pathPrefix 配置意味着您网站的每个链接都会以/environment/test 开头(请参阅documentation),但这并不意味着在运行网站的容器上,页面实际上托管在这条路。 在你的情况下,似乎不是这样。

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

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

    当通过 Traefik 使用 PathPrefix 连接时:

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

    因此,您将网站的 pathPrefix 设置与提供同一网站的路径混淆了。

    因此,当前情况的替代方案是在/environment/test/ 下为网站提供服务,并将PathPrefix 与traefik 一起使用。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2014-02-12
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多