La directiva NGINX "client_max_body_size" no funciona dentro del bloque "ubicación"


14

Tengo un /admincatálogo en mi sitio web y me gustaría permitir que los administradores carguen archivos grandes a través de formularios web. Así es como se ve mi nginx.com:

http {
    # ...
    client_max_body_size 16M;
    # ...

    server {
        server_name example.com;
        root /var/www/example.com;
        index index.php;

        location /admin {
            client_max_body_size 256M;
        }

        # ...
    }
}

Esto no funciona. /admin/index.phpel script no puede cargar archivos de más de 16 Mb: 413 Entidad de solicitud demasiado grande

Sin embargo, si me muevo client_max_body_sizepara serverbloquear todo funciona bien. Pero no quisiera hacer este cambio solo para el admincatálogo.

Según los documentos , client_max_body_sizese puede colocar dentro del locationbloque para anular la configuración solo para la ruta deseada.

¿Qué podría estar mal?

Respuestas:


14

Funciona bien, el problema es que no has entendido bien cómo funcionan las ubicaciones. Nginx solo aplicará un bloque de ubicación, nunca más de uno. Entonces cuando tienes dos ubicaciones

location ~ \.php$y location /adminy el URI es /admin/index.phpentonces su primera ubicación se aplica pero el segundo no lo hace. Incluso si usara una reescritura dentro de una ubicación, nginx descartaría las directivas y las volvería a analizar para la nueva ubicación.

Esta es también la razón por la que siempre publica configuraciones completas para no ocultar lo que realmente está mal.


Lo sentimos, por no publicar la configuración completa, tienes razón. En cuanto a la respuesta, esto no puede ser cierto. Aquí está el ejemplo de los documentos: wiki.nginx.org/HttpCoreModule#location Y en otros lugares, varios bloques de ubicación funcionan bien para mí.
Temnovit

1
Lo siento, pero es 100% correcto. Nginx puede buscar a través de múltiples bloques de ubicación, pero solo aplicará las directivas de uno de ellos. El que elija depende de las reglas documentadas en la página que ha vinculado.
Martin Fjordvald

@MartinFjordvald ¿cuál es la solución para esto?
chaosguru


1
@Juanitocalero no realmente no, la documentación oficial no es una muy buena guía de inicio, más una documentación de referencia para la sintaxis y la información básica.
Martin Fjordvald
Al usar nuestro sitio, usted reconoce que ha leído y comprende nuestra Política de Cookies y Política de Privacidad.
Licensed under cc by-sa 3.0 with attribution required.