मैं यह सुनिश्चित करने के लिए वेब पर कई लोगों को ProxyPreserveHost On
का उपयोग करने के लिए संदर्भित करता हूं ताकि एक प्रॉक्सी बैकएंड मूल कॉलर का होस्ट नाम प्राप्त कर सके। मैं इसका उपयोग अपने वेब एप्लिकेशन की सुरक्षा (जावा, टोमकैट) को कसने के लिए कर रहा हूं, जबकि यह भी अच्छा होगा अगर मेरे लॉग दिखाएंगे कि उपयोगकर्ता वास्तव में कहां हैं। मेरे बिलाव लॉग अब दिखाने के इस – बहुत बेकार:प्रॉक्सीप्रेशर्वहोस्ट मेरे लिए बहुत कम प्रतीत होता है
127.0.0.1 - - [17/Mar/2013:06:32:13 +0100] "GET /webapp/frontend/app/partials/welcome.html HTTP/1.1" 200 54
यह मेरा विन्यास है कि स्पष्ट रूप से अपेक्षा के अनुरूप काम नहीं करता है:
"/ etc/apache2/साइटों सक्षम/000-डिफ़ॉल्ट"
<VirtualHost *:80>
ProxyPreserveHost On
ProxyPass /webapp http://localhost:8080/webapp
ProxyPassReverse /webapp http://localhost:8080/webapp
RewriteEngine On
RewriteRule ^/$ /webapp/frontend/app/ [proxy]
RewriteRule ^/webapp/$ /webapp/frontend/app/ [redirect]
RewriteRule ^/webapp/app/$ /webapp/frontend/app/ [redirect]
सक्षम मॉड्यूल (यहां डिफ़ॉल्ट सामान कि 000-default
में था पर से):
sudo a2enmod proxy
sudo a2enmod proxy_http
sudo a2enmod rewrite
यह उबंटू 12.10 अपाचे HTTPD 2.2.22 चल रहा है।
आपकी सहायता की बहुत सराहना की जाएगी।
धन्यवाद। आपके द्वारा संदर्भित प्रश्न में मतदान के लिए वोट दिया गया है जो स्टैक ओवरफ़्लो के बाहर किसी आलेख से लिंक करता है जो वास्तव में 'प्रॉक्सीपेर्सर्वहोस्ट' को एक समाधान के रूप में संदर्भित करता है "इसलिए डेवलपर को 'एक्स-फॉरवर्डेड-फॉर हेडर' का उपयोग करके समाप्त नहीं करना पड़ता है" । मैं ऐसे डेवलपर हूं, और मुझे कुछ गैर-मानक का उपयोग करने में बुरा लगा। ने कहा कि, मैंने 'एक्स-फॉरवर्डेड फॉर' को गुगल किया है और यहां तक कि विकिपीडिया इसे _de facto_ मानक के रूप में संदर्भित करता है, जो मैंने शुरू में सोचा था उससे कहीं बेहतर है (कुछ अपाचे HTTPD विशिष्ट है जो मेरा वेब एप्लिकेशन अपाचे HTTPD-specific बनाता है) । –
मुझे लगता है कि लिंक किया गया ब्लॉग पोस्ट सिर्फ भ्रमित रूप से लिखा गया है। वह कहता है कि निर्देश "दूरस्थ रिमोट होस्ट रिमोट आईपी" को संरक्षित रखने के लिए इस्तेमाल किया जा सकता है। सामान्य परिस्थितियों में, वे एक ही चीज़ के लिए दो अलग-अलग नाम (DNS के माध्यम से) होंगे, लेकिन मुझे लगता है कि "रिमोट होस्ट" द्वारा वह वास्तव में दूरस्थ क्लाइंट के होस्टनाम के बजाय "दूरस्थ क्लाइंट द्वारा भेजे गए होस्ट हेडर" का अर्थ है। लेकिन वास्तव में, जैसा लिखा है कि यह भ्रमित है। – rra
मैं आगे बढ़ गया और 'WebAuthenticationDetails.getRemoteAddress()' पर अपने मौजूदा चेक के अलावा 'HttpServletRequest.getHeader (" X-Forwarded-For ") के वापसी मूल्य पर एक चेक लागू किया। मेरा आवेदन अब इस प्रकार 'एक्स-फॉरवर्ड-फॉर' जागरूक है। मैं शुरुआत में उम्मीद नहीं कर रहा था, लेकिन फिर भी काम कर रहा था। धन्यवाद। –