nginx - अपस्ट्रीम सर्वर से कस्टम हेडर पढ़ें


81

मैं nginx को एक रिवर्स प्रॉक्सी के रूप में उपयोग कर रहा हूं और सफलता के बिना एक अपस्ट्रीम सर्वर (अपाचे) की प्रतिक्रिया से एक कस्टम हेडर पढ़ने की कोशिश कर रहा हूं। अपाचे प्रतिक्रिया निम्नलिखित है:

HTTP/1.0 200 OK
Date: Fri, 14 Sep 2012 20:18:29 GMT 
Server: Apache/2.2.17 (Ubuntu)
X-Powered-By: PHP/5.3.5-1ubuntu7.10
Connection: close
Content-Type: application/json; charset=UTF-8
My-custom-header: 1

मैं माय-कस्टम-हेडर से मूल्य को पढ़ना चाहता हूं और यदि एक क्लॉज में इसका उपयोग करता हूं :

location / {
    // ...
    // get My-custom-header value here
    // ...
}

क्या यह संभव है? अग्रिम में धन्यवाद।

जवाबों:


93

$ http _ name_of_the_header_key

यदि आपका origin = domain.comहेडर है, तो आप $http_origin" domain.com " प्राप्त करने के लिए उपयोग कर सकते हैं

Nginx में मनमाने ढंग से अनुरोध हेडर फ़ील्ड का समर्थन करता है। उपरोक्त उदाहरण में एक चर नाम का अंतिम भाग अंडरस्कोर द्वारा प्रतिस्थापित डैश के साथ निचले मामले में परिवर्तित फ़ील्ड नाम है

संदर्भ डॉक्टर यहां: http://nginx.org/en/docs/http/ngx_http_core_module.html#var_http_

आपके उदाहरण के लिए चर होगा $http_my_custom_header


3
दरअसल, यह गलत है, और इसका जवाब नहीं दिया जाना चाहिए। भविष्य में जो भी इसके पार आता है, उसके लिए सही चर है $http_। एक उदाहरण के रूप में ओपी का उपयोग करना, $http_my_custom_header(यह मामला संवेदनशील है!)
jduncanator

मैंने दस्तावेज़ से मिलान करने के लिए इस उत्तर को सही किया है;)
पॉल डिक्सन

14
जैसा कि यह पता चला है, यह सही नहीं है। ओपी ने एक प्रतिक्रिया हेडर के लिए मूल्य पढ़ने के लिए कहा। आपको उपयोग करना चाहिए $sent_http_my_custom_headernginx.org/en/docs/http/ngx_http_core_module.html#var_sent_http_
नाथन

अगर आपको अपस्ट्रीम रेस्पॉन्स हेडर की जरूरत है तो @ dev-
gosain

14
उत्तर गलत है। पूछने वाला व्यक्ति अपस्ट्रीम सर्वर से हेडर तक पहुंचने का प्रयास कर रहा है । सही उत्तर है stackoverflow.com/a/30879181/111995
geekQ

50

मैं उसी मुद्दे का सामना कर रहा था। मैं दोनों की कोशिश की $http_my_custom_headerऔर $sent_http_my_custom_headerलेकिन यह मेरे लिए काम नहीं किया।

हालाँकि इस समस्या को हल करके $upstream_http_my_custom_header


8

$ Http_MY_CUSTOM_HEADER का उपयोग करें

आप कुछ-कुछ लिख सकते हैं जैसे

set my_header $http_MY_CUSTOM_HEADER;
if($my_header != 'some-value') {
#do some thing;
}

6
आदमी कहता है - एक चर नाम का अंतिम भाग फ़ील्ड नाम है जिसे निचले मामले में अंडरस्कोर द्वारा प्रतिस्थापित डैश के साथ परिवर्तित किया जाता है।
अर्जुन श्रीधरन

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