एक nginx कॉन्फ़िगरेशन फ़ाइल में लंबी लाइनें विभाजित करना


15

बैक-एंड को कचरा नहीं पास करने के लिए, मेरे पास एक locationनिर्देश के लिए एक सख्त regex है । यह इस तरह दिख रहा है:

location ^~ "/(some|stuff|more|bar|etc(-testing)?)/[a-zA-Z0-9]+/...(more|restrict).ext {
    # other directives
}

मैं 80 वर्णों पर लाइन को मोड़ना चाहूंगा, क्या कॉन्फ़िगरेशन को विभाजित करने का एक तरीका है? सिंटैक्स त्रुटि में निम्नलिखित परिणाम हैं, लेकिन कुछ ऐसा है जिसे मैं देख रहा हूं:

location ^~ "/(some|stuff|more|bar|etc(-testing)?)/[a-zA-Z0-9]+/"\
            "...(more|restrict).ext" {
# results in a literal newline (%0A) being accepted
location ^~ "/(some|stuff|more|bar|etc(-testing)?)/[a-zA-Z0-9]+/
...(more|restrict).ext" {

मुझे दस्तावेज़ीकरण में संकेत नहीं मिल पाए ( http://wiki.nginx.org/ConfigNotation और न ही http://wiki.nginx.org/HttpCoreModule#location ने तह लाइनों के बारे में कुछ भी उल्लेख किया है)


क्या आप प्रक्षेपित कई टुकड़ों से अपनी स्ट्रिंग बना सकते हैं? (मुझे कुछ पता नहीं है)
bsb

@bsb आप स्थान अभिव्यक्तियों में चर का उपयोग नहीं कर सकते, इसलिए नहीं, आप चर सेट नहीं कर सकते हैं और स्ट्रिंग प्रक्षेप का उपयोग कर सकते हैं।
लेकेन्स्टाइन 16

जवाबों:


7

मुझे नहीं लगता कि आप ऐसा कर सकते हैं।

nginx सभी व्हाट्सएप के साथ समान व्यवहार करता है, इसलिए भले ही आपने अपनी स्ट्रिंग को उसी तरह विभाजित करने की कोशिश की हो, और nginx इसे आपके इच्छित तरीके से पार्स कर सकता है, आप इसमें regex को एक व्हाट्सएप के झुंड के साथ हवा देंगे, जो मुझे यकीन है कि isn ' टी तुम क्या चाहते हो यदि nginx इसे पार्स नहीं कर सकता है, जो अधिक संभावना है, तो आपको सिंटैक्स त्रुटि मिलेगी।

आप बस कुछ लंबी लाइनों के साथ रहने वाले हैं, या कम जटिल नियमित अभिव्यक्ति करने जा रहे हैं।


खैर, अगर अग्रणी स्थान नहीं हो सकते हैं, तो मैं उसके साथ रह सकता हूं। लेकिन एक नई पंक्ति की शाब्दिक रूप से भी व्याख्या की गई है।
लेकेन्स्टाइन

यह वास्तव में दुनिया का अंत नहीं है। :)
माइकल हैम्पटन

1
अभी के लिए मैं एक location ".../[a-zA-Z0-9_...-]+$"पैटर्न के साथ फंस गया हूं, उसके बाद एक और location ~ "\.pkg\.tar\.xz$"अंदर। आपके उत्तर के लिए धन्यवाद, उम्मीद है कि किसी दिन एक बेहतर उत्तर दिखाई देगा;)
लेकेन्स्टाइन
हमारी साइट का प्रयोग करके, आप स्वीकार करते हैं कि आपने हमारी Cookie Policy और निजता नीति को पढ़ और समझा लिया है।
Licensed under cc by-sa 3.0 with attribution required.