2013-05-11 6 views
7

इस कॉन्फ़िगरेशन के साथ:मैं किसी क्लॉज के अंदर proxy_set_header क्यों नहीं डाल सकता?

server { 
    listen 8080; 
    location/{ 
     if ($http_cookie ~* "mycookie") { 
      proxy_set_header X-Request $request; 
      proxy_pass http://localhost:8081; 
     } 
    } 
} 

जब मैं nginx सेवा को फिर से लोड मैं इस त्रुटि है:

Reloading nginx configuration: nginx: [emerg] "proxy_set_header" directive is not allowed here in /etc/nginx/conf.d/check_cookie.conf:5 
nginx: configuration file /etc/nginx/nginx.conf test failed 

यह विन्यास ठीक काम करता है, लेकिन यह मैं क्या चाहते हैं नहीं करता है:

server { 
    listen 8080; 
    location/{ 
     proxy_set_header X-Request $request; 
     if ($http_cookie ~* "mycookie") { 
      proxy_pass http://localhost:8081; 
     } 
    } 
} 

क्यों मैं proxy_set_header किसी भी खंड के अंदर निर्देश नहीं डाल सकता?

अग्रिम धन्यवाद!

+0

कृपया क्रॉस-पोस्ट न करें। http://serverfault.com/questions/506972/nginx-why-i-cant-put-proxy-set-header-inside-an-if-clause – ceejayoz

+0

मैंने इस बारे में चर्चा करने के लिए एक बातचीत खोली। हम वहां चर्चा जारी रख सकते हैं। http://chat.stackexchange.com/rooms/8745/nginx – Neuquino

उत्तर

0

proxy_pass के विपरीत, आप किसी ब्लॉक के अंदर proxy_set_header नहीं डाल सकते हैं। आप इसे केवल http/server/location block में डाल सकते हैं। तो आपकी दूसरी कॉन्फ़िगरेशन अच्छी है।

संदर्भ: http://nginx.org/en/docs/http/ngx_http_proxy_module.html#proxy_set_header

संदर्भ: http, सर्वर, स्थान

पता नहीं क्या $ अनुरोध चर रहा है। यह nginx चर सूची में प्रकट नहीं होता है: http://wiki.nginx.org/HttpCoreModule#Variables। आप यहां क्या हासिल करने की कोशिश कर रहे हैं?

+0

मैं जो करने की कोशिश कर रहा हूं वह है: "यदि कुकी 'mycookie' परिभाषित किया गया है, तो मूल URL को शीर्षलेख में रखें और अनुरोध को किसी अन्य सर्वर पर भेजें" – Neuquino

+0

फिर $ अनुरोध –

+1

के बजाय $ request_uri का उपयोग करें ठीक है, लेकिन इससे समस्या हल नहीं होती है। क्या आप उस हेडर को जोड़ने का कोई तरीका जानते हैं? मैंने बिना किसी सफलता के add_header निर्देश का भी प्रयास किया http://nginx.org/en/docs/http/ngx_http_headers_module.html#add_header – Neuquino

0

स्थान के अंदर ", $ REMOTE_ADDR $ मेजबान" एक नया वेरिएबल

सेट $ ESB में इस

// डिफ़ॉल्ट हैडर मूल्य की तरह कुछ कोशिश;

// अगर मेरे कस्टम हेडर मौजूद रहने पर ($ http_my_header) {

सेट $ ESB "$ http_my_header, $ REMOTE_ADDR, $ मेजबान";

}

proxy_set_header मेरी हेडर $ ESB;

संबंधित मुद्दे