HTTP बॉडी कंटेंट में यूएनजीआई को फिर से कैसे बनाएँ?


14

यह रूट के बजाय 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 सामग्री को गतिशील रूप से पार्स और अपडेट करना संभव है क्योंकि यह प्रॉक्सी सर्वर से होकर गुजरती है?


2
क्या आपको एक समाधान मिला? यदि हाँ, तो आप इसे उत्तर के रूप में पोस्ट कर सकते हैं?
Huygens

जवाबों:


5

इसका एकमात्र समाधान जो मुझे अब तक मिला है वह है HttpSubsModule ( गीथब पृष्ठ भी देखें )।

मॉड्यूल आधिकारिक Nginx स्रोतों का हिस्सा नहीं है, इसलिए आपको संभवतः इस मॉड्यूल का उपयोग करने के लिए खुद Nginx का निर्माण करना होगा।

हमारी साइट का प्रयोग करके, आप स्वीकार करते हैं कि आपने हमारी Cookie Policy और निजता नीति को पढ़ और समझा लिया है।
Licensed under cc by-sa 3.0 with attribution required.