amazon-web-services - 跨多个 EC2 实例的 buildManifest 上的 Nextjs 404

标签 amazon-web-services amazon-ec2 load-balancing next.js keystonejs

上下文:我有一个简单的 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/

相关文章:

node.js - 使用 TCP 负载平衡器代理 WebSockets 没有粘性 session

django - Django 中的并发负载处理

networking - 谷歌云HTTPS负载均衡器 session 亲和性

amazon-web-services - AWS : dynamically allocate & associate new IP addresses to EC2 instance?

java - AWS API Gateway WebSocket 超时?

amazon-web-services - AWS Auto Scaling 组 - 每个目标的应用程序负载均衡器请求计数

amazon-web-services - 向 Amazon AWS ELB 响应添加自定义 header

ruby - AWS Elastic Beanstalk : Launching a new Rails App

amazon-web-services - 在 AWS 中 - 具有 SSL 证书的子域在 RESTful 调用中不起作用

amazon-ec2 - 如何在没有 cloudwatch 的情况下监控 amazon ec2 上的 linux 系统?