У меня есть приложение 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) Но поскольку я использую Amazon Эластичный бобовый стебель, Я не знаю, как это сделать без подключения к каждому отдельному экземпляру 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
файл, который присутствует во всех средах эластичного beanstalk nodejs, так как этот файл имеет следующую строку в конце блока http:
http {
...
include /etc/nginx/conf.d/*.conf;
# End Modification
}
У меня была аналогичная ситуация с развертыванием 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.