2013-09-23 14 views
29

यदि मेरे पास हेडर हैं: X_HEADER1 & X_HEADER2, यदि मैं इनमें से कोई भी हेडर सेट नहीं है या सही मान नहीं रखता है तो मैं सभी अनुरोधों को अस्वीकार करना चाहता हूं। इसे करने का बेहतरीन तरीका क्या है?Nginx: हेडर मौजूद नहीं है या गलत है

धन्यवाद

उत्तर

31

आप दो का उपयोग कर सकते से पहले या स्थान ब्लॉक में बयान हेडर का निरीक्षण करने के लिए और फिर एक 403 त्रुटि कोड अगर यह वर्तमान है।

if ($http_x_custom_header) { 
    return 403; 
} 

संदर्भ::
https://www.nginx.com/resources/wiki/start/topics/depth/ifisevil/
https://nginx.org/en/docs/http/ngx_http_access_module.html

टिप्पणी प्रति और अधिक विस्तार जोड़ना/अनुरोध:

वैकल्पिक रूप से, आप उन बयानों उस स्थान में एक विशिष्ट स्थान ब्लॉक करने के लिए फिर से लिखने और अस्वीकार करने के लिए यदि सभी का उपयोग कर सकते
if ($http_x_custom_header) { 
    return 405; 
} 

यह देखने के लिए कि हेडर मौजूद है या नहीं

यदि आप यह देखना चाहते हैं कि सही मान मौजूद हैं या नहीं, तो आपको पहले एक चर के लिए सही मानों को मैप करने की आवश्यकता है।

map $http_x_header $is_ok { 
    default "0"; 
    Value1 "1"; 
    Value2 "1"; 
    Value3 "1"; 
} 

if ($is_ok) { 
    return 405; 
} 

यह पहली या नहीं, ठीक है, तो अगर चर ठीक है देखने के लिए जाँच करता है करने के लिए शीर्ष लेख मूल्य मैप करता है।

संपादित करें: नक्शा ब्लॉक के बाद अर्धविराम हटाया गया क्योंकि इससे त्रुटि उत्पन्न होती है।

+1

+1, यदि आप कुछ उदाहरण दे सकते हैं तो यह और अधिक सराहना की जाएगी :)। – srain

+0

उम्मीद है कि यह उदाहरण उपयोगी है। – Rami

+3

लिंक पुराने होने लगते हैं। ये अद्यतन विकल्प प्रतीत होते हैं। https://www.nginx.com/resources/wiki/start/topics/depth/ifisevil/ http://nginx.org/en/docs/http/ngx_http_access_module.html – Zoredache

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