Nginx
NGINX 為 AWS Elastic Beanstalk 上的一條路由設置 client_max_body_size
我有一個部署到 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 XXM
到nginx.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 }