मैं सामान्य कॉन्फ़िगरेशन विकल्पों को साझा करने के लिए nginx स्थानों को कैसे कॉन्फ़िगर कर सकता हूं?


37

मैं स्थानों के सेट के लिए साझा कॉन्फ़िगरेशन ब्लॉक को कैसे कॉन्फ़िगर कर सकता हूं?

    location / {

            proxy_pass        http://127.0.0.1:9000/;
            proxy_redirect    off;
            proxy_set_header  Host             $http_host;
            proxy_set_header  X-Real-IP        $remote_addr;
            proxy_set_header  X-Forwarded-For  $proxy_add_x_forwarded_for;

            proxy_cache cache-test;
            proxy_cache_valid 200 302 24h;
            proxy_cache_valid 404 60s;
            add_header X-Cache-Status $upstream_cache_status;

    }


    location /api/0.1/user{
            proxy_cache_key /user/$http_authorization;
    }

अब अगर मैं /api/0.1/user को एक्सेस करने की कोशिश करता हूं तो मुझे 404 मिलेंगे क्योंकि यह 127.0.0.1:9000 के अनुरोध को पास नहीं करता है

जवाबों:


53

एक सामान्य प्रॉक्सी कॉन्फिगरेशन बनाएं और आवश्यकतानुसार शामिल करें।

/etc/nginx/api_proxy.conf

proxy_pass        http://127.0.0.1:9000/;
proxy_redirect    off;
proxy_set_header  Host             $http_host;
proxy_set_header  X-Real-IP        $remote_addr;
proxy_set_header  X-Forwarded-For  $proxy_add_x_forwarded_for;

proxy_cache cache-test;
proxy_cache_valid 200 302 24h;
proxy_cache_valid 404 60s;
add_header X-Cache-Status $upstream_cache_status;

आपका होस्ट कॉन्फ़िगरेशन फ़ाइल

...
location /api/0.1/user {
    include /etc/nginx/api_proxy.conf;
    proxy_cache_key /user/$http_authorization;
}
...

1
+1, लेकिन सिर्फ एक नोट: यह पता चलता है कि आप इस तरह से कॉन्फ़िगरेशन का पूरा गुच्छा शामिल कर सकते हैं पूरे स्थान सहित nginx.org/en/docs/ngx_core_module.html#include
समकक्ष


11

अधिकांश प्रॉक्सी_ * कॉन्फ़िगरेशन चर को सर्वर के संदर्भ में भी अनुमति दी जाती है, इसलिए आप उन्हें कई स्थानों पर समान सेटिंग्स साझा करने के लिए स्थानांतरित कर सकते हैं।

हालाँकि, प्रॉक्सी_पास का उपयोग केवल स्थान के भीतर ही किया जाना चाहिए। तो आपके पास प्रत्येक स्थान के भीतर कम से कम यह निर्देश होना चाहिए, वैकल्पिक रूप से कुछ अतिरिक्त प्रॉक्सी_ * var के मानों को ओवरराइड करना।


यदि आपके पास स्थान-विशिष्ट proxy_set_headerनिर्देश हैं, तो यह काम नहीं करेगा क्योंकि "ये निर्देश पिछले स्तर से विरासत में मिले हैं, अगर और केवल अगर वर्तमान स्तर पर कोई प्रॉक्सी_सेट_हीडर निर्देश परिभाषित नहीं हैं।" nginx.org/en/docs/http/…
एमर्सन
हमारी साइट का प्रयोग करके, आप स्वीकार करते हैं कि आपने हमारी Cookie Policy और निजता नीति को पढ़ और समझा लिया है।
Licensed under cc by-sa 3.0 with attribution required.