यह रूट के बजाय URI उप-फ़ोल्डर में nginx रिवर्स प्रॉक्सी 302 को रीडायरेक्ट करने के तरीके के बारे में मेरे पहले के प्रश्न का अनुसरण है ।
मैं का उपयोग करता है एक nginx प्रॉक्सी सर्वर है rewrite
और proxy_pass
एक ऐसा URL के लिए प्रॉक्सी बाहरी अनुरोध करने के लिए निर्देशों https://domain.com/my/web/app/
पर एक आंतरिक लैन सर्वर करने के लिए https://10.0.0.22/
। यहाँ ASCII UML में अनुवाद का प्रतिनिधित्व करने का मेरा प्रयास है:
.-------------. .------------------.
| Nginx proxy | | Local web server |
| (domain.com) | | (10.0.0.22) |
'-------------' '------------------'
| |
| |
GET https://domain.com/my/web/app/ ----------->| |
|---------------->| GET /
| |
|<----------------| 302 redirect /login.php
302 redirect /my/web/app/login.php <-----------| |
| |
GET https://domain.com/my/web/app/login.php -->| |
|---------------->| GET /login.php
| |
|<----------------| 200
HTML body content (images, CSS, links) <-------|
यहां मेरी nginx कॉन्फ़िगरेशन फ़ाइल में वास्तविक स्थान ब्लॉक है:
location ^~ /my/web/app/
{
proxy_buffering off;
rewrite /my/web/app/(.*) /$1 break;
proxy_pass https://10.0.0.22/;
proxy_redirect default;
}
यह HTTP अनुरोधों और प्रतिक्रियाओं के लिए आंतरिक और बाहरी यूआरआई पथों के बीच यूआरआई अनुवाद के लिए बहुत अच्छा काम करता है, लेकिन एचटीएमएल सामग्री (बॉडी इमेज, सीएसएस, स्क्रिप्ट) में किसी भी यूआरआई का अनुवाद नहीं किया जाता है।
उदाहरण के लिए, यूआरआई जैसे /images/logo.png के साथ एचटीएमएल प्रतिक्रिया में एम्बेडेड रिश्तेदार रास्तों के साथ छवियों को वेब क्लाइंट को वापस भेज दिया जाता है और https://domain.com/images/logo.png
इसके बजाय इसकी व्याख्या की जाती है https://domain.com/my/web/app/images/logo.png
।
मैं समझ सकता हूं कि ऐसा क्यों हो रहा है, लेकिन यह आश्चर्यजनक होगा अगर डायनेमिक रूप से प्रॉक्सी सामग्री के साथ-साथ अनुरोधों का भी कोई तरीका हो। क्या HTML सामग्री में अंतर्निहित URI को रूपांतरित करने के लिए nginx प्राप्त करने का एक तरीका है? क्या HTML सामग्री को गतिशील रूप से पार्स और अपडेट करना संभव है क्योंकि यह प्रॉक्सी सर्वर से होकर गुजरती है?