NGINX "client_max_body_size" निर्देश "स्थान" ब्लॉक के अंदर काम नहीं करता है


15

/adminमेरी वेबसाइट पर एक कैटलॉग है और मैं चाहूंगा कि एडमिट्स को वेब फॉर्म के माध्यम से बड़ी फाइलें अपलोड करने की अनुमति दी जाए। यहाँ मेरा 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;
        }

        # ...
    }
}

यह काम नहीं करता। /admin/index.phpस्क्रिप्ट बड़ी फ़ाइलों को अपलोड नहीं कर सकती है जो 16Mb: 413 अनुरोध एंटिटी बहुत बड़ी है

हालांकि, अगर मैं सब कुछ ठीक काम करता है ब्लॉक client_max_body_sizeकरने के लिए कदम server। लेकिन मैं केवल adminकैटलॉग के लिए यह परिवर्तन नहीं करना चाहता ।

डॉक्स के अनुसार , केवल वांछित पथ के लिए सेटिंग को ओवरराइड करने के लिए ब्लॉक के client_max_body_sizeअंदर रखा जा सकता locationहै।

क्या गलत हो सकता है?

जवाबों:


15

यह ठीक काम करता है, समस्या यह है कि आपने गलत समझा है कि स्थान कैसे काम करते हैं। Nginx केवल कभी एक स्थान ब्लॉक लागू करेगा, कभी एक से अधिक नहीं। इसलिए जब आपके पास दो स्थान हों

location ~ \.php$और location /adminURI /admin/index.phpतब आपका पहला स्थान लागू होता है, लेकिन दूसरा नहीं होता है। यहां तक ​​कि अगर आप किसी स्थान के भीतर एक पुनर्लेखन का उपयोग करने के लिए थे, तो nginx निर्देशों को छोड़ देगा और उन्हें नए स्थान के लिए पुन: वितरित करेगा।

यही कारण है कि आप हमेशा पूर्ण कॉन्फ़िगरेशन पोस्ट करते हैं ताकि आप वास्तव में गलत क्या है छिपाए नहीं।


क्षमा करें, पूर्ण कॉन्फ़िगरेशन पोस्ट नहीं करने के लिए, आप सही हैं। जवाब के लिए, यह सच नहीं हो सकता। यहाँ डॉक्स से उदाहरण दिया गया है: wiki.nginx.org/HttpCoreModule#location और अन्य स्थानों पर मेरे लिए कई स्थान ब्लॉक ठीक काम करते हैं।
तमनोवित

1
क्षमा करें, लेकिन यह 100% सही है। Nginx कई स्थान ब्लॉक के माध्यम से खोज सकता है, लेकिन यह केवल उनमें से किसी एक के निर्देशों को लागू करेगा। जो यह चुनता है वह आपके द्वारा जुड़े पृष्ठ पर प्रलेखित नियमों पर निर्भर करता है।
मार्टिन Fjordvald

@MartinFjordvald इसके लिए क्या उपाय है?
चोसगुरु

को देखो configuration E: लिंक में nginx.org/en/docs/http/ngx_http_core_module.html#location
holmberd

1
@Juanitocalero वास्तव में नहीं, आधिकारिक दस्तावेज बहुत अच्छा स्टार्टर गाइड नहीं है, वाक्यविन्यास और बुनियादी जानकारी के लिए संदर्भ प्रलेखन के अधिक है।
मार्टिन फेजोर्वाल्ड
हमारी साइट का प्रयोग करके, आप स्वीकार करते हैं कि आपने हमारी Cookie Policy और निजता नीति को पढ़ और समझा लिया है।
Licensed under cc by-sa 3.0 with attribution required.