मेरे पास अपाचे एक लोड बैलेंसर के रूप में स्थापित है। मैं अपाचे को एक्स-फ़ॉर्वर्ड-प्रोटो हेडर सेट करना चाहता था, लेकिन यह काम नहीं करता है:
RequestHeader set X-Forwarded-Proto "%{SERVER_PROTOCOL}e"
हेडर शून्य पर सेट हो जाता है। कोई विचार क्यों?
मेरे पास अपाचे एक लोड बैलेंसर के रूप में स्थापित है। मैं अपाचे को एक्स-फ़ॉर्वर्ड-प्रोटो हेडर सेट करना चाहता था, लेकिन यह काम नहीं करता है:
RequestHeader set X-Forwarded-Proto "%{SERVER_PROTOCOL}e"
हेडर शून्य पर सेट हो जाता है। कोई विचार क्यों?
जवाबों:
देर से लेकिन फिर भी, मैं बस एक ही मुद्दे से निपटा हूं, और यह मेरे लिए काम कर रहा है:
RequestHeader set X_FORWARDED_PROTO 'https' env=HTTPS
प्रलेखन कहते हैं:
जब Add, Append, या सेट तर्क के साथ RequestHeader निर्देश का उपयोग किया जाता है, तो शर्तों को निर्दिष्ट करने के लिए एक चौथे तर्क का उपयोग किया जा सकता है। यदि पर्यावरण चर को env = में निर्दिष्ट किया गया है ... तर्क मौजूद है (या यदि पर्यावरण चर मौजूद नहीं है और env =! ... निर्दिष्ट किया गया है) तो RequestHeader निर्देश द्वारा निर्दिष्ट क्रिया प्रभावी होगी। अन्यथा, निर्देश का अनुरोध पर कोई प्रभाव नहीं पड़ेगा।
जबकि HTTPS पर्यावरण चर केवल तब सेट होता है जब अनुरोध SSL के माध्यम से किया जाता है।
आप ऐसा नहीं चाहते हैं; यह आपके हेडर को "HTTP / 1.1" (यहां तक कि एक https अनुरोध पर) सेट करेगा - संभवतः आप जो भी पास कर रहे हैं उसके लिए बहुत उपयोगी नहीं है।
आपके पास http और https के लिए अलग-अलग VirtualHost ब्लॉक हैं; RequestHeader
प्रत्येक में बस हार्डकोड ।
<VirtualHost *:80>
RequestHeader set X-Forwarded-Proto "http"
...
</VirtualHost>
<VirtualHost *:443>
RequestHeader set X-Forwarded-Proto "https"
...
</VirtualHost>
आप early
कीवर्ड का उपयोग करके इसे ठीक कर सकते हैं :
RequestHeader set X-Forwarded-Proto "https" early
अन्यथा, आप वह कर सकते हैं जो जॉन क्रेंशॉ ने सुझाया था, जो निर्देशों के RewriteRule
बजाय उपयोग किया जाता है ProxyPass
।
कारण मिल गया। यह ऑपरेशन के मुद्दे का एक आदेश है। mod_rewrite इन पर्यावरण चर की आपूर्ति के लिए ज़िम्मेदार है, लेकिन Apache इसे तब तक संसाधित नहीं करता जब तक कि यह किसी भी ProxyPass अनुरोध को संभाल नहीं लेता। तब तक, यह सिर्फ अशक्त सेट करेगा। एकमात्र समाधान mod_rewrite के माध्यम से प्रॉक्सी करना प्रतीत होता है।
Http://www.gossamer-threads.com/lists/apache/users/267160?do=post_view_threaded#267160 देखें