Aumento de client_max_body_size en Nginx conf en AWS Elastic Beanstalk

Resuelto Nick Parsons asked hace 54 años • 28 respuestas

Me encuentro con errores "413 Entidad de solicitud demasiado grande" al publicar archivos de más de 10 MB en nuestra API que se ejecuta en AWS Elastic Beanstalk.

He investigado bastante y creo que necesito aumentar client_max_body_size para Nginx, sin embargo, parece que no puedo encontrar ninguna documentación sobre cómo hacer esto usando Elastic Beanstalk. Supongo que es necesario modificarlo utilizando un archivo ebetension.

¿Alguien tiene alguna idea sobre cómo puedo aumentar el límite? 10 MB es bastante débil, tiene que haber una manera de aumentarlo manualmente.

Nick Parsons avatar Jan 01 '70 08:01 Nick Parsons
Aceptado

Hay dos métodos que puede seguir para esto. Desafortunadamente, algunos funcionan para algunos tipos de aplicaciones EB y otros funcionan para otros.

Compatible/recomendado en la documentación de AWS

Para algunos tipos de aplicaciones, como Java SE , Go , Node.js y tal vez Ruby (no está documentado para Ruby, pero todas las demás plataformas Nginx parecen admitir esto), Elasticbeanstalk tiene un conocimiento incorporado sobre cómo configurar Nginx.

Para ampliar la configuración nginx predeterminada de Elastic Beanstalk, agregue archivos de configuración .conf a una carpeta denominada .ebextensions/nginx/conf.d/en el paquete fuente de su aplicación . La configuración nginx de Elastic Beanstalk incluye archivos .conf en esta carpeta automáticamente.

~/workspace/my-app/
|-- .ebextensions
|   `-- nginx
|       `-- conf.d
|           `-- myconf.conf
`-- web.jar

Configuración del proxy inverso - Java SE

Para aumentar específicamente el tamaño máximo de carga, cree un archivo .ebextensions/nginx/conf.d/proxy.confconfigurando el tamaño máximo del cuerpo en el tamaño que prefiera:

client_max_body_size 50M;

Cree el archivo de configuración de Nginx directamente

Para otros tipos de aplicaciones, después de mucha investigación y horas de trabajo con el maravilloso equipo de soporte de AWS, creé un archivo de configuración dentro .ebextensionspara complementar la configuración de nginx. Este cambio permitió un tamaño de cuerpo de publicación más grande.

Dentro del .ebextensionsdirectorio, creé un archivo llamado 01_files.configcon el siguiente contenido:

files:
    "/etc/nginx/conf.d/proxy.conf" :
        mode: "000755"
        owner: root
        group: root
        content: |
           client_max_body_size 20M;

Esto genera un archivo proxy.conf dentro del directorio /etc/nginx/conf.d. El archivo proxy.conf simplemente contiene una línea client_max_body_size 20M;que funciona.

Tenga en cuenta que, en algunas plataformas, este archivo se creará durante la implementación, pero luego se eliminará en una fase de implementación posterior.

Puede especificar otras directivas que se describen en la documentación de Nginx.

http://wiki.nginx.org/Configuration

Nick Parsons avatar Sep 23 '2013 04:09 Nick Parsons

Probé todos .ebextensionslos métodos para agregar configuración de nivel de implementación y no me ayudó en la última AMI de Amazon Linux. Investigué mucho y después de revisar los registros, puedo encontrar que el ejecutor de la tarea de implementación busca una carpeta llamada .platformcada vez y pensé en agregar una como .ebextensions. A continuación se muestran las configuraciones que hice en la carpeta raíz de mi proyecto.

Agregue la siguiente configuración de carpeta en el nivel raíz de la carpeta de su proyecto.

Estructura de carpetas (.platform/nginx/conf.d/proxy.conf)

.platform/
         nginx/
              conf.d/
                    proxy.conf
         00_myconf.config

Contenido del archivo 1: proxy.conf (carpeta interior .platform/nginx/conf.d/)

client_max_body_size 50M;

Contenido del archivo 2: 00_myconf.config (carpeta interior .platform/)

container_commands:
  01_reload_nginx:
    command: "service nginx reload"

Cuidado total con las extensiones. El primer archivo es .conf y el segundo archivo es .config .

Ahora vuelva a implementar su proyecto en Amazon Elastic Beanstalk y verá la magia. Esta configuración se agregará a todas sus instancias EC2, creadas como parte del escalado automático.

Estructura de carpetas detallada a continuación.

ingrese la descripción de la imagen aquí

Jijo Cleetus avatar May 21 '2020 20:05 Jijo Cleetus