मेरे पास HTTPS कनेक्शन को संभालने के लिए कॉन्फ़िगर किया गया एक httpd सर्वर है और कनेक्शन को टॉमकैट (http या AJSP के माध्यम से) पर भेज दिया जाता है जहां अनुरोध संसाधित होते हैं। टॉमकैट सर्वर में मेरी आवश्यकताओं में से एक है प्रत्येक अनुरोध के रिमोट पोर्ट नंबर को लॉग करना। अगर मैंने सीधे टोमकैट मारा, तो रिमोट पोर्ट नंबर को पुनः प्राप्त करना सीधे आगे है और हम वर्तमान में इसे getRemotePort()
फ़ंक्शन (HttpServletRequest) का उपयोग कर कर रहे हैं।HTTPD पर क्लाइंट स्रोत पोर्ट को पुनर्प्राप्त करना -> टॉमकैट सेटिंग
हालांकि, चूंकि मैं एक रिवर्स प्रॉक्सी (HTTP/AJP के माध्यम से HTTPS अनुरोधों को अग्रेषित करना) कर रहा हूं, इसलिए एक नया कनेक्शन बनाया जाएगा और मुझे कनेक्शन के लिए हमेशा रिमोट पोर्ट (और उस मामले के लिए दूरस्थ आईपी) मिल जाएगा मेरा httpd सर्वर टोमकैट (जब मैं AJP का उपयोग करता हूं को छोड़कर। इस मामले में दूरस्थ सर्वर आईपी जानकारी सही ढंग से आती है)।
ProxyPreserveHost On
ProxyPass/ajp://localhost:8009/
या
ProxyPreserveHost On
ProxyPass/http://localhost:8081/
मैं भी RewriteRules साथ एक छोटा सा खेला, लेकिन चीजें काम नहीं कर सके:
मैं की तरह httpd पर अलग अलग विन्यास, कोशिश की है।
httpd दस्तावेज़ पढ़ना, mod_proxy X-Forwarded-Host
, X-Forwarded-For
, आदि जैसी चीज़ों के लिए अनुरोध शीर्षलेख जानकारी प्रदान करता है लेकिन स्रोत पोर्ट के बारे में कोई जानकारी नहीं है।
मेरे पास even found a bug है, जहां स्पष्ट रूप से X-Forwarded-Port
विशेषता प्रॉक्सी अनुरोध शीर्षलेख में जोड़ा गया था, लेकिन यह कोड मुख्य पंक्ति/शाखा में नहीं प्रतीत होता है।
तो संक्षेप में, मैं क्लाइंट के स्रोत पोर्ट को पुनर्प्राप्त कैसे कर सकता हूं (रिवर्स प्रॉक्सी नहीं) जब HTTPD टॉमकैट को अनुरोध अग्रेषित कर रहा है?
तो आपको रिमोट आईपी पता मिलता है लेकिन पोर्ट नहीं? साथ ही, आप tomcat/httpd के संस्करण संख्याओं को पार कर सकते हैं। आपके द्वारा प्राप्त httpd बग संस्करण 1.3 – bubbly
हाय केविन के लिए था। मैं अपाचे httpd v 2.2.3 और टॉमकैट 5.5 – alp
का उपयोग कर रहा हूं एक्स-फॉरवर्ड-काम के लिए? – bubbly