Quero fazer o upload de arquivos grandes para o ambiente do AWS Elastic Beanstalk sem receber a mensagem de erro "413 Request Entity Too Large" (413 Entidade de solicitação grande demais).
Breve descrição
Por padrão, o NGINX tem um limite de 1 MB para uploads de arquivos. Se o tamanho de uma solicitação exceder o valor configurado, o erro 413 Request Entity Too Large ("413 Request Entity Too Large" 413 Entidade de solicitação grande demais) será retornado. Para fazer o upload de arquivos de mais de 1 MB, configure a diretiva client_max_body_size nos arquivos de configuração do NGINX.
Importante: M e MB são expressões equivalentes para “megabyte”. Por exemplo, 2 M é igual a 2 MB. No entanto, use somente M no arquivo de configuração, pois MB não é válido em arquivos de configuração.
Resolução
Para configurar client_max_body_size em ambientes do Amazon Linux 2, faça o seguinte:
1. Para estender a configuração padrão do NGINX do Elastic Beanstalk, adicione o arquivo de configuração client_max_body_size.conf que inclui o seguinte:
client_max_body_size 50M;
Observação: no exemplo anterior, o valor de client_max_body_size é atualizado para 50 M. Use qualquer valor no lugar de 50, conforme suas necessidades.
2. Copie o arquivo de configuração .conf client_max_body_size.conf para uma pasta denominada .platform/nginx/conf.d/ no pacote de fontes da aplicação. A configuração do NGINX do Elastic Beanstalk inclui os arquivos.conf nessa pasta automaticamente. Certifique-se de criar esse caminho se ele não existir em seu pacote de fontes. O exemplo a seguir mostra a estrutura do diretório .platform e do arquivo.conf no arquivo zip da aplicação:
-- .ebextensions
-- other non nginx server config files
-- .platform
-- nginx
-- conf.d
-- client_max_body_size.conf
-- other application files
O arquivo client_max_body_size.conf tem um caminho como este: my-app/.platform/nginx/conf.d/client_max_body_size.conf.
3. Implante o código e o novo diretório .platform/ juntos como uma nova versão da aplicação no ambiente Elastic Beanstalk.
4. Depois que a implantação for concluída, entre na instância em execução no ambiente Elastic Beanstalk. Depois de entrar, verifique se as configurações do servidor NGINX estão aplicadas. Para fazer isso, use o seguinte comando:
$ sudo nginx -T | egrep -i "client_max_body_size"
nginx: the configuration file /etc/nginx/nginx.conf syntax is ok
nginx: configuration file /etc/nginx/nginx.conf test is successful
client_max_body_size 50M;