if statement - सशर्त रूप से nginx में हेडर को ओवरराइड करना है, यदि कोई कुकी मौजूद है?



if-statement cookies (1)

क्या यह देखने का एक तरीका है कि nginx में एक विशिष्ट कुकी मौजूद है या नहीं?

अभी के लिए मेरे पास कुकी से हैडर सेट करने के लिए नीचे दिया गया एक अनुभाग है:

proxy_set_header x-client-id $cookie_header_x_client_id;

मैं यह जांचना चाहता हूं कि क्या उस कुकी मौजूद है, फिर हेडर सेट करें, अन्यथा शीर्षलेख को ओवरराइड न करें।

मैंने कोशिश की:

if ($cookie_header_x_client_id) {
    proxy_set_header x-client-id $cookie_header_x_client_id;
}

लेकिन यह काम नहीं करता है और नीचे त्रुटि देता है:

"proxy_set_header" directive is not allowed here in /etc/nginx/sites-enabled/website:45

कोई भी समाधान?


एनजीएनएक्स में संदर्भ के भीतर केवल एक सीमित संख्या में निदेश दिए गए हैं यह इस तथ्य से संबंधित है कि if rewrite मॉड्यूल का हिस्सा है; जैसे, इसके संदर्भ में, आप केवल उन निर्देशों का उपयोग कर सकते हैं जो विशेष रूप से मॉड्यूल के दस्तावेज में दिए गए हैं।

इस "सीमा" के आसपास आम तरीका है मध्यवर्ती चर का प्रयोग करके राज्य का निर्माण करना, और फिर ऐसे मध्यवर्ती चर का उपयोग करके proxy_set_header जैसे निर्देशों का उपयोग करें:

set $xci $http_x_client_id;
if ($cookie_header_x_client_id) {
    set $xci $cookie_header_x_client_id;
}
proxy_set_header x-client-id $xci;




ngx-http-rewrite-module