traefik - 为什么 PathPrefixStrip 在 PathPrefix 不起作用时起作用?
问题描述
我有一个用--prefix-paths
. pathPrefix
设置为/environment/test
in 。gatsby-config.js
它被部署到运行 Traefik 的 docker swarm 上。
将以下标签添加到服务使一切运行正常:
traefik.frontend.rule=PathPrefixStrip:/environment/test
然后我可以浏览/environment/test
并点击我的 GatsbyJs 网站。
但是我觉得很奇怪,因为后端是使用路径前缀构建的。
添加以下标签不起作用:
traefik.frontend.rule=PathPrefix:/environment/test
它不应该与PathPrefix
而不是一起使用PathPrefixStrip
吗?
解决方案
GatsbyJS 中的pathPrefix
配置意味着您网站的每个链接都将在前面添加/environment/test
(请参阅文档),但这并不意味着在运行网站的容器上,页面实际上托管在此路径上。在您的情况下,似乎并非如此。
这意味着当通过 Traefik 与 连接PathPrefixStrip
时,在浏览器中单击链接时:
- 浏览器请求
/environment/test/page
- Traefik 将其转换为对容器的请求
/page
- 容器实际上正在提供文件,
/
因此它会响应页面
通过 Traefik 连接时PathPrefix
:
- 浏览器请求
/environment/test/page
- Traefik 将其转换为对容器的请求
/environment/test/page
- 该容器实际上正在提供文件,
/
因此它找不到该页面。
因此,您将网站的pathPrefix
设置与提供同一网站的路径混淆了。
因此,当前情况的替代方案是在traefik下为网站提供服务/environment/test/
并使用它。PathPrefix
推荐阅读
- javascript - React js,在滚动时添加事件侦听器不起作用。帮我解决它
- javascript - 在 Qualtrics 中修改 JavaScript 日历
- javascript - 使用 express 服务器在 React 应用程序中热重载
- scala - 如何模拟 .map 函数?
- laravel-5 - laravel v7.0 和 php v7.2 中的每个帖子路由都出现 419 错误
- javascript - [Vue 警告]:客户端渲染的虚拟 DOM 树与服务器渲染的内容不匹配。如何找到位置?
- xslt - 动态分组
- javascript - 如何在 php 类函数调用中使用 ajax 显示错误?
- javascript - 带有 dataTransfer 的拖放事件在移动视图中不起作用
- php - 在会话中保存用户信息不起作用.PHP