使用 traefik 和 Next JS 在子文件夹中发布站点

Publish a site in a subfolder with traefik and Next JS

我正在尝试使用 Traefik 在子文件夹中发布网站(例如。com/sitename)。

该站点是使用 Next JS 构建的。

我 运行 部署时发生的情况是,构建站点中的所有脚本 link 都忽略了文件夹(站点名称)。例如,名为 generatedfile.js 的 js 脚本被 link example.com/generatedfile.js 访问,正确的方式是 example.com/sitename/generatedfile.js

我的 traefik 参数:

-l traefik.frontend.rule="Host:example.com; PathPrefixStrip:/sitename" -l traefik.frontend.entryPoints="http, https" -l traefik.frontend.headers.SSLRedirect="true" 

我曾尝试将 basePath 添加到我的 next.config.js,但是当我这样做时,我只能访问 link exemple.com/sitename/sitename

中的站点

next.config.js:

module.exports = withFonts({
  basePath: '/sitename'
});

我正在使用 docker 在 AWS 中部署。

我整天都在尝试解决这个问题,我什至不知道还能尝试解决什么问题。

对不起我的英语,这不是我的母语。

PathPrefixStrip 表示匹配路径并在将请求转发到您的应用程序之前去除匹配的字符串。请改用 PathPrefix

看起来您正在使用 Traefik 的 v1.x。这是更好地解释差异的文档:https://doc.traefik.io/traefik/v1.7/basics/

值得一提的是,如果您有多个路由规则,Traefik 会按字符串长度降序对它们进行排序,然后遍历它们以匹配传入的请求。也就是说,/api匹配在/之前。