2012-05-25 31 views
7

के माध्यम से पारदर्शी रूप से गुजरने के बजाय रीडायरेक्ट करता है मुझे http://<server>:8080/app/portal/ पर टॉमकैट के अंदर एक वेब एप्लिकेशन चल रहा है। मैं चाहता हूं कि दुनिया यूआरएल http://<server>/portal/ के माध्यम से इस एप्लिकेशन को देखना चाहें।अपाचे प्रॉक्सीपास के साथ रिवर्स प्रॉक्सी

ऐसा करने के लिए, मैंने अपाचे 2.2 के साथ एक रिवर्स प्रॉक्सी स्थापित की है। documentation for ProxyPass के अनुसार मैं रिवर्स प्रॉक्सी पारदर्शी रूप से सभी अनुरोधों को पारित करने की अपेक्षा करता हूं। मेरा ब्राउज़र कभी टोमकैट यूआरएल के बारे में नहीं जानना चाहिए।

<Location /portal/> 
    AllowOverride All 
    RewriteEngine On 
    ProxyPass http://server:8080/app/portal/ 
    ProxyPassReverse http://server:8080/app/portal/ 
</Location> 

जब मैं Firefox का उपयोग http://<server>/portal/ को खोलने के लिए, मैं एक 302 अस्थायी रूप से ले जाया गया, और सभी मिल

कोई आभासी होस्ट करता है, मैं अपने httpd.conf में ये पंक्तियां कहा:

यहाँ मेरी विन्यास है फॉलो-अप कॉल सीधे मेरे ब्राउज़र से http://<server>:8080/app/portal/ पर जाते हैं। मेरा ब्राउज़र इस यूआरएल को इंगित करता है।

यह एक रिवर्स प्रॉक्सी की अपेक्षा नहीं है। क्या मैंने कॉन्फ़िगरेशन गलत किया है या क्या मैंने रिवर्स प्रॉक्सी के उद्देश्य को गलत समझा? मेरा वांछित व्यवहार पाने के लिए मुझे क्या करना चाहिए?

+0

यहां 'रिवाइटइंजिन ऑन' क्या है? –

+1

अच्छा सवाल। मैंने कॉपी की है कि एक और कामकाजी विन्यास से जहां हम वास्तव में फिर से लिखा था। मैंने इसे हटा दिया, और यह वही व्यवहार करता है। –

उत्तर

5

मैं davidethell से जवाब टिप्पणी करने के लिए कोशिश की, लेकिन लाइनों का प्रारूप सही नहीं हो सकता है, इसलिए यहाँ मैं क्या पता चला है:

समस्या यह है कि रिवर्स प्रॉक्सी केवल करने लगता था यूआरएल पर काम करें जहां युद्ध को मेरे टोमकैट में तैनात किया गया है, और टोमकैट के अंदर सर्वलेट को नहीं। इससे 2 पुनर्लेखन होते हैं, उनमें से एक रिवर्स प्रॉक्सी और उसके पीछे सब कुछ फिर से लिखना।

RewriteEngine On 
RewriteRule ^/portal/$ /portal/portal 
RewriteRule ^/portal(.+) http://<server>:8080/app$1 [P] 
+0

खुशी है कि आपने इसे काम किया है! यह थोड़ी देर के बाद से मैंने टॉमकैट और अपाचे के साथ समान रिवर्स प्रॉक्सी कर दिया है। मुझे लंबे समय तक अपाचे कनेक्टर बहुत अधिक भरोसेमंद पाया गया। – davidethell

+1

ऐसा लगता है कि यह यूआरएल को फिर से लिखने पर काम करता है, लेकिन मुझे 403 वर्जित मुद्दे का सामना करना पड़ा। – ThemeZ

1

क्या आपने प्रॉक्सीपास के बजाय mod_rewrite प्रॉक्सी विकल्प का उपयोग करने का प्रयास किया है? कुछ की तरह:

RewriteRule ^$ http://server:8080/app/portal/ [P] 
+0

संकेत के लिए धन्यवाद। यह उतना आसान नहीं था, लेकिन सही दिशा। विवरण के लिए नीचे मेरा उत्तर देखें –

1

आप अपने रिवर्स प्रॉक्सी विन्यास में निम्नलिखित विकल्प जोड़ने के लिए भूल गया:

ProxyPreserveHost On 

आप URL पुनर्लेखन के साथ समान व्यवहार प्राप्त कर सकते हैं, लेकिन यह दस्तावेज़ में सुझाए गए नहीं है।

संबंधित मुद्दे