NGINX 为 AWS Elastic Beanstalk 上的一条路由设置 client_max_body_size

NGINX 为 AWS Elastic Beanstalk 上的一条路由设置 client_max_body_size

我有一个 Node.Js 应用程序部署到 Amazon Elastic Beanstalk。上传文件时,出现以下错误:

2019/03/04 17:00:42 [error] 4325#0: *722 client intended to send too large body: 30877841 bytes,
client: my ip,
server: ,
request: "POST /api/files/upload HTTP/1.1",
host: "mydomain.com",
referrer: "mydomain.com/..."

因此我需要client_max_body_size XXM补充nginx.conf

问题

(1)但是由于我使用亚马逊Elastic Beanstalk,我不知道如何做到这一点,而无需连接到每个 EC2 实例并手动更新文件。

(2)我还想仅增加最大尺寸一个网址

答案1

你可以在 Linux Elastic Beanstalk 实例上自定义软件使用环境配置文件。对于您的具体情况,在本地应用程序主文件夹中,您应该有一个 .ebextensions 目录。在该文件夹中创建一个新文件,我们将其命名为“nginx.config”,并将以下内容放入该文件中:

---
files:
  /etc/nginx/conf.d/00_client_max_body_size.conf:
    content: "client_max_body_size 10m;"
    group: root
    mode: "000644"
    owner: root

这将指示 Elastic Beanstalk 在 /etc/nginx/conf.d/ 中创建一个名为 00_client_max_body_size.conf 的文件,并在该文件中放置一行内容:

client_max_body_size 10m;

捆绑您的应用程序并将新版本上传到 Elastic Beanstalk。完成此操作后,您会在 Linux 实例上看到以下内容:

$ ls -al     /etc/nginx/conf.d
total 20
drwxr-xr-x 2 root root 4096 Mar  8 00:34 .
drwxr-xr-x 4 root root 4096 Feb 15 22:24 ..
-rw-r--r-- 1 root root   25 Mar  8 00:34 00_client_max_body_size.conf
-rw-r--r-- 1 root root 1351 Mar  8 00:35 00_elastic_beanstalk_proxy.conf
-rw-r--r-- 1 root root  283 Dec 13 00:21 virtual.conf

这将包含在nginx.conf所有 nodejs elastic beanstalk 环境中的主文件中,因为该文件在其 http 块末尾有一行如下:

http {

...

include /etc/nginx/conf.d/*.conf;
# End Modification
}

答案2

我在将 Docker 部署到 Elastic Beanstalk 时遇到了类似的情况。我能够通过在此处添加配置文件来解决这个问题:<app>/.ebextensions/increase_upload_size.config使用以下代码:

container_commands:
  01_reload_nginx:
    command: "sudo service nginx reload"

files:
  "/etc/nginx/conf.d/proxy.conf" :
    mode: "000644"
    owner: root
    group: root
    content: |
      client_max_body_size 20M;

当我在 EB 中执行“上传和部署”时,更改就实现了。

相关内容