413 请求实体太大 - Elastic Beanstalk + 负载均衡器 + Node.js 应用程序
413 Request Entity Too Large - Elastic Beanstalk + Load Balancer + Node.js application
我查看了所有可能的 Whosebug 帖子并尝试了所有不同的方法。 None 成功了。似乎也没有关于此的官方文件。在我的本地应用程序中一切正常,我可以上传任何大小的图像,但是一旦它部署在我的弹性 beanstalk 中,我似乎每个图像 upoad 的限制为 1M。
问题:
每次用户发布大于 1MB 的图像时,我都会收到 nginx 的 413 错误消息。
弹性豆茎日志:
2020/07/28 17:22:53 [错误] 10404#0:*62 客户端打算发送太大的正文:2800500 字节,客户端:172.31.18.162,服务器:,请求:“POST /comment/image_post/11003031 HTTP/1.1", host: "myapp.com", referrer: "https://myapp.com/11003031"
我为解决问题所做的工作:
我在我的节点、js 应用程序根文件夹中创建了一个 .ebextensions 文件夹,添加了以下代码并将其命名为 proxi.config,并将其推送到我的 github,后者通过管道部署到 Elastic Beanstalk .我可以在我的存储库中看到 proxi.config 但由于某种原因它会自动被负载均衡器覆盖(我猜从我一直在阅读的内容)。
proxi.config
container_commands:
01_reload_nginx:
command: "service nginx reload"
files:
"/etc/nginx/conf.d/proxy.conf":
mode: "000755"
owner: root
group: root
content: |
client_max_body_size 25M;
如果这个比较麻烦,请问有没有办法提高1M的限制?
您的 proxy.conf
未被使用的可能原因是您使用的是当前版本的 EB,它在 Amazon Linux 2 上运行( AL2).但是,您尝试使用的代理设置适用于 AL1 上的旧版 EB 运行。
对于 AL2,nginx 设置应该放在 .platform
文件夹中,而不是 .ebextenations
中,如 docs.
中所示
因此您可以尝试以下方法:
文件 .platform/nginx/conf.d/myconfig.conf
的内容为
client_max_body_size 25M;
请注意,我无法自行验证 nginx 设置。它仍然可能无法工作,因为它可能设置错误或格式错误。但是使用 .ebextenations
而不是 .platform
在 AL2 EB 环境中绝对是一个问题。
我查看了所有可能的 Whosebug 帖子并尝试了所有不同的方法。 None 成功了。似乎也没有关于此的官方文件。在我的本地应用程序中一切正常,我可以上传任何大小的图像,但是一旦它部署在我的弹性 beanstalk 中,我似乎每个图像 upoad 的限制为 1M。
问题: 每次用户发布大于 1MB 的图像时,我都会收到 nginx 的 413 错误消息。
弹性豆茎日志: 2020/07/28 17:22:53 [错误] 10404#0:*62 客户端打算发送太大的正文:2800500 字节,客户端:172.31.18.162,服务器:,请求:“POST /comment/image_post/11003031 HTTP/1.1", host: "myapp.com", referrer: "https://myapp.com/11003031"
我为解决问题所做的工作:
我在我的节点、js 应用程序根文件夹中创建了一个 .ebextensions 文件夹,添加了以下代码并将其命名为 proxi.config,并将其推送到我的 github,后者通过管道部署到 Elastic Beanstalk .我可以在我的存储库中看到 proxi.config 但由于某种原因它会自动被负载均衡器覆盖(我猜从我一直在阅读的内容)。
proxi.config
container_commands:
01_reload_nginx:
command: "service nginx reload"
files:
"/etc/nginx/conf.d/proxy.conf":
mode: "000755"
owner: root
group: root
content: |
client_max_body_size 25M;
如果这个比较麻烦,请问有没有办法提高1M的限制?
您的 proxy.conf
未被使用的可能原因是您使用的是当前版本的 EB,它在 Amazon Linux 2 上运行( AL2).但是,您尝试使用的代理设置适用于 AL1 上的旧版 EB 运行。
对于 AL2,nginx 设置应该放在 .platform
文件夹中,而不是 .ebextenations
中,如 docs.
因此您可以尝试以下方法:
文件 .platform/nginx/conf.d/myconfig.conf
的内容为
client_max_body_size 25M;
请注意,我无法自行验证 nginx 设置。它仍然可能无法工作,因为它可能设置错误或格式错误。但是使用 .ebextenations
而不是 .platform
在 AL2 EB 环境中绝对是一个问题。