इस तरह से फिर से लिखना विन्यास को अलग करने के लिए कोई रास्ता नहीं बनाया गया है। आपके द्वारा लिए जा सकने वाले तीन दृष्टिकोण हैं।
मैप मॉड्यूल शामिल हैं
नक्शा मॉड्यूल आप एक अलग फाइल से मैपिंग शामिल करने के लिए अनुमति देता है। फ़ाइल बदलने के बाद भी 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 कोड निष्पादित करने की अनुमति देता है । हालांकि आपको प्रत्येक अनुरोध के लिए कोड की व्याख्या करने के बाद से प्रीफॉर्मेंस के बारे में सावधान रहने की आवश्यकता है।