使用 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
匹配在/
之前。
我正在尝试使用 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
匹配在/
之前。