上下文:我有一个简单的 Next.js 和 KeystoneJS 应用程序。我已在 2 个 AWS EC2 实例上进行了重复部署。每个实例还有一个 Nginx 反向代理路由端口 80 到 3000(我的应用程序端口)。这 2 个实例也位于应用程序负载均衡器后面。
问题:当路由到我的默认 URL 时,我的应用程序尝试获取 nextjs 应用程序的 buildManifest
。然而,大多数情况下都是 404。
我的猜测:由于请求非常接近,因此我的负载均衡器会将 buildManifest
的第二个请求路由到另一个实例。由于我在该实例上进行了单独的 yarn 构建
,因此 build id
不同,因此它无法获取正确的构建。此请求出现 404 错误,我的网站已损坏。
我的问题:有没有办法确保从实例 A
发出的所有请求都路由到实例 A
?或者是否有更好的方法在每个实例上进行构建,使它们的 id 相同?这是 Docker 的一个用例吗?
最佳答案
我的负载均衡器也遇到了类似的问题,并指定了 custom build id似乎已经修好了。这是dedicated issue这就是我的 next.config.js
现在的样子:
const execSync = require("child_process").execSync;
const lastCommitCommand = "git rev-parse HEAD";
module.exports = {
async generateBuildId() {
return execSync(lastCommitCommand).toString().trim();
},
};
关于amazon-web-services - 跨多个 EC2 实例的 buildManifest 上的 Nextjs 404,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/63817674/