NGINX “client_max_body_size” yönergesi “location” bloğu içinde çalışmıyor


15

/adminWeb sitemde bir katalog var ve yöneticilerin web formları aracılığıyla büyük dosyalar yüklemelerine izin vermek istiyorum. İşte benim nginx.com şöyle:

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;
        }

        # ...
    }
}

Bu çalışmıyor. /admin/index.phpkomut dosyası 16 MB'tan büyük dosyaları yükleyemiyor: 413 Varlık İsteği Çok Büyük

Hareket Ancak, client_max_body_sizehiç serverblok şeyi cezası çalışır. Ancak bu değişikliği sadece adminkatalog için yapmak istemem .

Dokümanlara göre , sadece istenen yol için ayarı geçersiz kılmak üzere blok client_max_body_sizeiçine yerleştirilebilir location.

Ne yanlış olabilir?

Yanıtlar:


15

İyi çalışıyor, sorun şu ki, konumların nasıl çalıştığını yanlış anladınız. Nginx yalnızca bir konum bloğu uygular, asla birden fazla yer engellemez. Yani iki yeriniz olduğunda

location ~ \.php$ve location /adminURI /admin/index.phpilk konumunuz geçerlidir, ancak ikincisi geçerli değildir. Bir konumda bir yeniden yazma işlemi kullanmış olsanız bile, nginx direktifleri atar ve yeni konum için yeniden sunar.

Bu aynı zamanda, gerçekte yanlış olanı gizlememeniz için her zaman tam yapılandırmalar göndermenizin nedenidir.


Üzgünüz, tam yapılandırma göndermediğiniz için haklısınız. Cevaba gelince, bu doğru olamaz. Dokümanlar'dan örnek: wiki.nginx.org/HttpCoreModule#location Ve başka yerlerde birden fazla konum bloğu benim için iyi çalışıyor.
Temnovit

1
Üzgünüm, ama% 100 doğru. Nginx birden fazla konum bloğunda arama yapabilir, ancak bunlardan yalnızca birinin yönergelerini uygular. Hangisini seçtiği, bağladığınız sayfada belgelenen kurallara bağlıdır.
Martin Fjordvald

@MartinFjordvald bunun çözümü nedir?
chaosguru


1
@Juanitocalero gerçekten hayır, resmi belgeler çok iyi bir başlangıç ​​kılavuzu, sözdizimi ve temel bilgiler için daha fazla referans belgesi değildir.
Martin Fjordvald
Sitemizi kullandığınızda şunları okuyup anladığınızı kabul etmiş olursunuz: Çerez Politikası ve Gizlilik Politikası.
Licensed under cc by-sa 3.0 with attribution required.