首页 > 解决方案 > 如何使用 Caddy 和子路径部署 Next.js 应用程序?

问题描述

我目前正在使用 Next.js 做一个应用程序8.0.3

在当地一切都很好。但是,当我使用 Caddy 部署应用程序时,我遇到了一些麻烦。

关于我的 Next.js 部分,我正在使用自定义服务器并为该服务器提供服务,我正在这样做:

next build
NODE_ENV=production node server.js

问题本身是关于将应用程序路由到子路径,例如/beta在该子路径内运行所有应用程序。

球童档案

localhost:8000

proxy /beta http://localhost:3000/ 

当我运行http://localhost:8000/beta在浏览器中打开的应用程序时,HTML 已正确加载,但未加载所有样式、资产和 javascript 文件。既不是页面之间的导航。它在后面查看这些文件/,而我期待在后面/beta

开发工具

复制失败的 url 并尝试找到添加的正确路径/beta,文件也不存在......

文件

不过,如果没有子路径/beta(如果我直接使用 root /),一切正常。但这不是我正在寻找的解决方案,因为我在同一个域后面运行了更多应用程序。

有一个解决方法是这个特定的例子。是代理也/_next/static。但对我来说不是一个好的解决方案,原因不同:

  1. 无法运行超过 1 个 Next.js 应用程序,例如/beta, /alpha
  2. 此解决方案不修复页面之间的导航。
  3. 我想在 Next.js 部分解决这个问题(如果可能的话),而不是在 Caddy 部分做一个解决方法。

看起来这与 Next.js 部分有关。但我对此很迷茫。我试图更改assetPrefix: '/beta',然后正在寻找文件/beta/file而不是/file. 但是文件也不存在...

有人可以帮助我吗?

标签: proxyreverse-proxynext.jscaddycaddyfile

解决方案


这行得通吗

localhost:8000

proxy /beta http://localhost:3000/beta 

推荐阅读