Nextjs 404s on buildManifest 跨多个 EC2 实例



上下文:我有一个简单的Next.js和KeystoneJS应用程序。我在 2 个 AWS EC2 实例上进行了重复部署。每个实例还有一个 Nginx 反向代理路由端口 80 到 3000(我的应用端口)。这 2 个实例也位于应用程序负载均衡器后面。

问题:路由到我的默认 URL 时,我的应用程序会尝试获取 nextjs 应用程序的buildManifest。然而,大多数时候,这是 404。

我的猜测:由于请求非常接近,因此我的负载均衡器正在将buildManifest的第二个请求路由到另一个实例。由于我在该实例上进行了单独的yarn build,因此build ids是不同的,因此它没有获取正确的构建。此请求 404s 和我的网站已损坏。

我的问题:有没有办法确保从实例A发出的所有请求都路由到实例A?或者有没有更好的方法在每个实例上进行构建,以便它们的 ID 相同?这是 Docker 的用例吗?

我的负载均衡器遇到了类似的问题,指定自定义构建 ID 似乎已经解决了它。这是专用问题,这就是我现在next.config.js的样子:

const execSync = require("child_process").execSync;
const lastCommitCommand = "git rev-parse HEAD";
module.exports = {
async generateBuildId() {
return execSync(lastCommitCommand).toString().trim();
},
};

如果您在 next.config.js 文件中使用自定义构建目录,请将其删除并使用默认构建目录。

喜欢:

distDir: "build">

从 next.config.js 文件中删除上述行。

学分:https://github.com/serverless-nextjs/serverless-next.js/issues/467#issuecomment-726227243

相关内容

  • 没有找到相关文章