सर्वर में स्थान अधिलेखित add_header निर्देशों में add_header निर्देश


11

नगीनक्स 1.2.1 का उपयोग करते हुए मैं add_headerनिम्न प्रकार से कई हेडर जोड़ने में सक्षम हूं :

server {
    listen       80;
    server_name  localhost;
    root /var/www;
    add_header Name1 Value1;      <=== HERE
    add_header Name2 Value2;      <=== HERE

    location / {
        echo "Nginx localhost site";
    }
}

परिणाम

GET /
HTTP/1.1 200 OK
Name1: Value1
Name2: Value2

हालाँकि मैं जल्द ही add_headerअंदर निर्देश का उपयोग करता हूं location, लेकिन अन्य add_headerनिर्देशों serverको नजरअंदाज कर दिया जाता है

server {
    listen       80;
    server_name  localhost;
    root /var/www;
    add_header Name1 Value1;      <=== HERE
    add_header Name2 Value2;      <=== HERE

    location / {
        add_header Name3 Value3;  <=== HERE
        add_header Name4 Value4;  <=== HERE
        echo "Nginx localhost site";
    }
}

परिणाम

GET /
HTTP/1.1 200 OK
Name3: Value3
Name4: Value4

प्रलेखन का कहना है कि दोनों serverऔर locationमान्य हैं contextऔर राज्य का उपयोग नहीं करता है add_headerइसे का उपयोग एक रोकता में अन्य में।

Q1: क्या आप जानते हैं कि यह एक बग या इच्छित व्यवहार है और क्यों?

Q2: क्या आप HttpHeadersMoreModuleमॉड्यूल का उपयोग करने की तुलना में इसे ठीक करने के लिए अन्य विकल्प देखते हैं ?

जवाबों:


18

यह अपेक्षित व्यवहार है। add_headerनिर्देशों, nginx में अन्य सभी सरणी प्रकार निर्देशों की तरह, पिछले स्तर से विरासत में मिली यदि और केवल यदि कोई हैं add_headerनिर्देशों वर्तमान स्तर पर परिभाषित किया।

यदि आप सभी हेडर को जोड़ने के लिए nginx चाहते हैं location /, तो आपको उन सभी को सूचीबद्ध करना होगा location /, अर्थात

location / {
    add_header Name1 Value1;
    add_header Name2 Value2;
    add_header Name3 Value3;
    add_header Name4 Value4;
    return 200 "";
}

यदि आपको एक ही स्थान पर हेडर के बड़े उपसमूह को सूचीबद्ध करने के तरीके की आवश्यकता है, तो आप इसके लिए includeनिर्देश का उपयोग कर सकते हैं । यहां डॉक्स देखें ।


मैं केवल है add_headerअंदर locationनिर्देश है, लेकिन मैं अभी भी इस हैडर जोड़ा नहीं दिख रहा है - किसी भी विचार?
आदित्य एमपी

@adityamenon क्या आपके पास केवल एक है add_header? यदि हाँ, तो सुनिश्चित करें कि एक प्रतिक्रिया कोड डॉक्स से एक है, nginx.org/r/add_header देखें ।
मैक्सिम डूनिन

हाय मैक्सिम, मेरे पास कुछ अलग मुद्दे थे, मेरे पास आखिरकार एक विन्यास है जो काम करता है: stackoverflow.com/a/19135714/443219
आदित्य एमपी

हमारी साइट का प्रयोग करके, आप स्वीकार करते हैं कि आपने हमारी Cookie Policy और निजता नीति को पढ़ और समझा लिया है।
Licensed under cc by-sa 3.0 with attribution required.