Como personalizo a configuração do nginx para modificar “client_max_body_size” no Elastic Beanstalk?

2 minuto de leitura
0

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;

AWS OFICIAL
AWS OFICIALAtualizada há um ano