में सापेक्ष पथ को अनदेखा करता है मेरा शीर्षक सबसे अच्छा नहीं है, वेबस्टफ का मेरा ज्ञान काफी बुनियादी है, क्षमा करें।nginx रिवर्स प्रॉक्सी के पीछे सर्वर यूआरएल
मैं क्या
हासिल करना चाहते हैं मैं एक बॉक्स fanbox Archlinux है कि मैं इंटरनेट से अपने घर लैन के लिए मुख्य प्रवेश बिंदु के रूप में उपयोग पर nginx चल (अर्थात् काम किया है, जहां मैं केवल पोर्ट 80 करने के लिए बाहर निकल सकते हैं और 443) एक बदलते डोमेन नाम का उपयोग कर रिवर्स प्रॉक्सी सुविधा के माध्यम से जिस पर मेरा कोई नियंत्रण नहीं है और हम अब home.net पर कॉल करेंगे।
fanbox अपने पोर्ट 80 और 443 home.net को मैप किया है, वह हिस्सा आसान था।
मैं फ़ायरवॉल के पीछे 2 वेबसर्वर, web1.lan, web2.lan, web2ilo.lan है।
http://web1.lan/phpAdmin/
http://web1.lan/gallery/
http://web2.lan/phpAdmin/
http://web2.lan/dlna/
: इन दोनों विभिन्न अनुप्रयोगों (जो विभिन्न मशीनों पर एक ही नाम हो सकता है) कि सीधे (नाम उदाहरण के रूप में दिया जाता है, मैं सामग्री पर कोई नियंत्रण नहीं) मानक URL के माध्यम से लैन पर पहुँचा जा सकता है है
... और इतने पर ...
अब web2ilo.lan एक विशेष मामला है। यह एचपी सर्वर web2.lan के बैंड प्रबंधन वेब इंटरफ़ेस से बाहर है।
http://web2ilo/login.html
मेरा लक्ष्य इस तरह home.net की सब-पाथ के माध्यम से इन तक पहुँचने के लिए है:
http://home.net/web1/phpAdmin/
http://home.net/web1/gallery/
http://home.net/web2/phpAdmin/
http://home.net/web2/dlna/
http://home.net/web2ilo/login.html
तो यह केवल उसकी जड़ यूआरएल द्वारा पहुँचा जा सकता है कि विशेष रूप से वेब सर्वर, केवल 1 आवेदन प्रदान करता है मेरी समस्या
लगभग काम करता है लेकिन वेब अनुप्रयोगों URL पुनः लिखने के लिए करते हैं यही कारण है कि इतना है कि बाद मैं करने के लिए क्रमश: प्रवेश:
http://home.net/web1/phpAdmin/login.php
http://home.net/web2ilo/login.html
ब्राउज़र को
http://home.net/phpAdmin/index.php
http://home.net/index.html
नोट क्रमश पुनः निर्देशित किया जाता है कि रिश्तेदार उपपथ web1 और web2ilo चले गए हैं, जो तार्किक रूप से मुझे एक 404.
मेरी config
तो देना अब तक, मैंने बहुत कुछ खोजा है और मैंने जो कुछ भी कर रहा था उसे समझने के बिना मैंने nginx में कई विकल्पों की कोशिश की। यहां मेरी कॉन्फ़िगरेशन है जो इस समस्या को पुन: उत्पन्न करती है। मैंने स्पष्टता के लिए एसएसएल छोड़ दिया है।
server {
listen 443 ssl;
server_name localhost;
# SSL stuff left out for clarity
location/{
root /usr/share/nginx/html;
index index.html index.htm;
}
location /web1/ {
proxy_set_header Host $host;
proxy_redirect off;
proxy_pass https://web1.lan/;
}
location /web2/ {
proxy_set_header Host $host;
proxy_redirect off;
proxy_pass https://web2.lan/;
}
location /web2ilo/ {
proxy_set_header Host $host;
proxy_redirect off;
proxy_pass https://web2ilo.lan/;
}
}
पहले जवाब
के बाद जवाब में से पहले दो (धन्यवाद!), मुझे लगता है कि मेरी सेटअप आम से दूर है और मैं मुसीबत के लिए अकेले शीर्षक हो सकता है उसके बाद।
फ्रंटेंड बंदरगाहों और डोमेन/होस्टनाम को छूए बिना फ़ायरवॉल के पीछे वेबसर्वर तक पहुंचने का बेहतर विचार क्या होगा?
आप स्पष्ट रूप से अक्षम यूआरएल 'proxy_redirect off' साथ फिर से लिखने और यह काम करने की उम्मीद होगी। मजेदार। –
मैंने उदाहरणों का पालन किया कि मुझे गुगलिंग मिली ... मैंने इस विकल्प के लिए कई पैरामीटर की कोशिश की है लेकिन शायद ही कोई अंतर दिखाई दे सकता है। तो मुझे लगता है कि मेरा पूरा दृष्टिकोण पूरी तरह से गलत है। मजाकिया नहीं। – FLBzh