एक बाहरी स्रोत से नग्नेक्स में पुनर्निर्देश बनाए रखना


15

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

इनमें से कुछ लोग IIS में या अपाचे में पुनर्निर्देशन से काफी परिचित हैं, लेकिन उन्हें नगीनक्स कॉन्फ़िगरेशन तक सीधे पहुंच देने का कोई विकल्प नहीं है।

मैं देख रहा हूं, कि .htaccessफाइलों के लिए कोई nginx समर्थन नहीं है, जिसे मैं एक्सेस दे सकता हूं और मैं यह भी पसंद करूंगा कि nginx को शामिल करने वाली किसी conf-file को राइट एक्सेस न दें। मुझे उम्मीद है, कि हमारी मार्केटिंग हमारे nginx सेटअप को घंटों के भीतर तोड़ देगी ...

क्या हमारे लोड बैलेंसर के दिल तक उनकी पहुँच के बिना कोई सुरक्षित संभावना है?

जवाबों:


24

इस तरह से फिर से लिखना विन्यास को अलग करने के लिए कोई रास्ता नहीं बनाया गया है। आपके द्वारा लिए जा सकने वाले तीन दृष्टिकोण हैं।

मैप मॉड्यूल शामिल हैं

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

nginx.conf:

map $uri $new {
    include /etc/nginx/marketing.map;
}

server {
    ...
    if ($new) {
        rewrite ^ $new redirect;
    }
    ...
}

marketing.map:

/about  /company/about-us;
~^/people/(?<person>.*)$    /company/people/$person;

पूर्व-प्रक्रिया कॉन्फ़िगरेशन

सबसे पहले एक स्क्रिप्ट लिखना है जो रीडायरेक्ट को कुछ प्रारूप से परिवर्तित करता है जिसे आप नगीनक्स कॉन्फ़िगरेशन में परिभाषित करते हैं। उदाहरण के लिए, अलग-अलग रीडायरेक्ट किए गए स्थान की सूची दी गई है:

/foo/(.*) /bar/$1

और एक स्क्रिप्ट:

#!/bin/sh
while read SOURCE DEST; do
    echo "rewrite $SOURCE $DEST permanent;"
done < redirects.txt > redirects.conf

निम्नलिखित विन्यास बनाने के लिए:

rewrite /foo/(.*) /bar/$1 permanent;

फिर आप nginx -tपूरे कॉन्फ़िगरेशन को चलाने के लिए जाँचना चाहेंगे कि यह पुनः लोड करने से पहले वैध है।

ऑन-द-फ्लाई प्रसंस्करण

दूसरा विकल्प यह है कि आप nginx में ही रीडायरेक्ट कॉन्फ़िगरेशन को पढ़ने और संसाधित करने के लिए ngx_lua , ngx_perl या ngx_js का उपयोग करें। उदाहरण के लिए, rewrite_by_luaनिर्देश आपको फिर से लिखने के लिए Lua कोड निष्पादित करने की अनुमति देता है । हालांकि आपको प्रत्येक अनुरोध के लिए कोड की व्याख्या करने के बाद से प्रीफॉर्मेंस के बारे में सावधान रहने की आवश्यकता है।


1
मैप मॉड्यूल रिडायरेक्ट को कॉन्फ़िगर करने के लिए थोड़ा प्रतिबंधित तरीका प्रदान करता है।
एमओआरजीएन

1
नक्शा विधि बहुत आशाजनक लगती है! इसलिए, मैं मैप-फाइल को बनाए रखने के लिए एक साधारण वेबसाइट लिखना शुरू करूंगा। धन्यवाद!
साशा

2
अफसोस की बात है कि इस बिंदु (2014 गिरावट) पर ngx_js परियोजना को आखिरी बार दो साल पहले छुआ गया था। ngx_lua बहुत सक्रिय और अच्छी तरह से बनाए रखा है, हालांकि।
विले

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