मैं कई वेब अनुप्रयोगों के साथ एक सर्वर स्थापित करने की कोशिश कर रहा हूं, जो सभी को Apache VirtualHost (एक ही सर्वर पर चल रहे अपाचे) के माध्यम से परोसा जाएगा। मेरा मुख्य बाधा यह है कि प्रत्येक वेब एप्लिकेशन को SSL एन्क्रिप्शन का उपयोग करना चाहिए। थोड़ी देर के लिए गुगली करने और स्टैकओवरफ़्लो पर अन्य प्रश्नों को देखने के बाद, मैंने वर्चुअलबॉस्ट के लिए निम्न कॉन्फ़िगरेशन लिखा:
<VirtualHost 1.2.3.4:443>
ServerName host.example.org
<Proxy *>
Order deny,allow
Allow from all
</Proxy>
SSLProxyEngine On
ProxyRequests Off
ProxyPreserveHost On
ProxyPass / https://localhost:8443/
ProxyPassReverse / https://localhost:8443/
</VirtualHost>
भले ही https://host.example.org:8443 सुलभ है, https://host.example.org नहीं है, जो मेरे वर्चुअल होस्ट कॉन्फ़िगरेशन के उद्देश्य को पराजित करता है। फ़ायरफ़ॉक्स शिकायत करता है कि, भले ही वह सर्वर से सफलतापूर्वक जुड़ा हो, लेकिन कनेक्शन बाधित था। अपाचे की त्रुटि में मुझे निम्न चेतावनी भी मिलती है।
proxy: no HTTP 0.9 request (with no host line) on incoming request and preserve host set forcing hostname to be host.example.org for uri
वेब एप्लिकेशन (एक टॉमकैट सर्वर) पर एक्सेस लॉग एक अजीब एक्सेस अनुरोध दिखाता है:
"?O^A^C / HTTP/1.1" 302
जब मैं सीधे https://host.example.org:8443 से जुड़ता हूं तो मुझे सही पहुंच प्राप्त होती है :
"GET / HTTP/1.1" 302
अंत में मुझे यह भी उल्लेख करना चाहिए कि जब मैं एसएसएल का उपयोग नहीं करता तो वर्चुअल होस्ट पूरी तरह से ठीक काम करता है।
मै इसे काम मे कैसे ले सकता हूँ?
ProxyPreserveHost On
यह लगभग हमेशा गलत है, बेकार है और लगभग हमेशा टूटता हैProxyPassReverse
। एक साइड नोटProxyRequests off
के रूप में डिफ़ॉल्ट है, इस प्रकार निरर्थक।