nginx स्थान में चर सेट करें


37

मैं अपने nginx कॉन्फ़िगरेशन को अनुकूलित करने का प्रयास कर रहा हूं, इसलिए एक चर को सेट करना संभव होगा, और सभी स्थान पथ स्वचालित रूप से अपडेट होंगे। मेरे पास चार पंक्तियाँ हैं:

server_name php.domain.com;
root /srv/web/vhosts/php/web;
error_log /srv/web/vhosts/php/logs/error.log;
access_log /srv/web/vhosts/php/logs/access.log;

मैं जो हासिल करना चाहता हूं, वह एक चर (इस मामले में 'php') को सेट करना और इसे कॉन्फ़िगर करना है।

set $variable "php";
server_name $variable.domain.com;
root /srv/web/vhosts/$variable/web;
error_log /srv/web/vhosts/$variable/logs/error.log;
access_log /srv/web/vhosts/$variable/logs/access.log;

हालाँकि यह सीमेंस है कि nginx इस कॉन्फिगर में वेरिएबल्स को नजरअंदाज करता है। क्या मैं कुछ गलत कर रहा हूं या स्थान रास्तों में चर का उपयोग करना संभव नहीं है?

जवाबों:


58

चर को कहीं भी घोषित नहीं किया जा सकता है और न ही किसी निर्देश में उपयोग किया जा सकता है।

जैसा कि setनिर्देशन का प्रलेखन है:

Syntax:   set $variable value;
Default:  —
Context:  server, location, if

तात्कालिक परिणाम यह है कि आप किसी httpखंड में कस्टम चर का उपयोग नहीं कर सकते हैं ।

अद्यतन : एक चर्चा के बाद और इस चैटरूम में एलेक्सीटन के साथ प्रयोग ।

  • access_logप्रतिबंधों के साथ चर हो सकते हैं। उनमें से, बफ़रिंग की कमी और यह तथ्य कि अग्रणी स्लैश को एक चर में घोषित नहीं किया जाना चाहिए
  • error_log चर के साथ काम नहीं करेंगे।
  • root निर्देश में चर हो सकते हैं।
  • server_nameनिर्देश केवल $hostnameचर जैसे संकेतन के रूप में सख्त मूल्य की अनुमति देता है।

1
access_log/ error_logचर के साथ काम करते हैं, लेकिन कुछ सीमाओं के साथ। server_nameचर नहीं हो सकते।
एलेक्सी टेन

@AlexeyTen ने मेरा उत्तर पुनः पढ़ा। यह कस्टम चर के साथ काम नहीं करता है । सर्वर नाम में अंतर्निहित वैरिएबल हो सकता है जैसे $hostname। उस व्यवहार को स्पष्ट करने के उत्तर का अद्यतन करें।
जेवियर लुकास

5
खैर, $hostnameकेवल अनुमत चर है। github.com/nginx/nginx/blob/... वास्तव में, यह एक जादू निरंतर, नहीं एक वास्तविक चर की तरह है
एलेक्सी दस


3
यह शायद सबसे अच्छा शोधित एसएफ उत्तर है। आप दोनों का धन्यवाद / Cc @AlexeyTen
kaiser
हमारी साइट का प्रयोग करके, आप स्वीकार करते हैं कि आपने हमारी Cookie Policy और निजता नीति को पढ़ और समझा लिया है।
Licensed under cc by-sa 3.0 with attribution required.