Nginx

NGINX 為 AWS Elastic Beanstalk 上的一條路由設置 client_max_body_size

  • February 27, 2020

我有一個部署到 Amazon Elastic Beanstalk 的 Node.Js 應用程序。上傳文件時,我收到以下錯誤:

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 XXMnginx.conf.

問題

(1) 但是當我使用 Amazon Elastic Beanstalk時,我不知道如何做到這一點,無需連接到每個 EC2 實例並手動更新文件。

(2) 我還想只為一個 url增加最大大小。

您可以使用環境配置文件在 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 彈性 beanstalk 環境中的主文件中,因為該文件在其 http 塊的末尾有一行,如下所示:

http {

...

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

引用自:https://serverfault.com/questions/956684