ฉันกำลังพยายามตั้งค่าเซิร์ฟเวอร์ที่มีเว็บแอปพลิเคชั่นหลายตัวซึ่งทั้งหมดจะให้บริการผ่าน apache VirtualHost (apache ที่ทำงานบนเซิร์ฟเวอร์เดียวกัน) ข้อ จำกัด หลักของฉันคือแต่ละเว็บแอปพลิเคชันต้องใช้การเข้ารหัส SSL หลังจาก googling ซักพักหนึ่งและดูคำถามอื่น ๆ เกี่ยวกับ stackoverflow ฉันได้เขียนการกำหนดค่าต่อไปนี้สำหรับ VirtualHost:
<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นั้นไม่สามารถทำได้ซึ่งขัดกับวัตถุประสงค์ของการกำหนดค่าโฮสต์เสมือนของฉัน Firefox บ่นว่าแม้ว่าจะเชื่อมต่อกับเซิร์ฟเวอร์สำเร็จ แต่การเชื่อมต่อก็ถูกขัดจังหวะ ฉันยังได้รับคำเตือนต่อไปนี้ใน error ของ apache:
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
บนเว็บแอปพลิเคชัน (เซิร์ฟเวอร์ Tomcat) บันทึกการเข้าถึงแสดงคำขอเข้าถึงที่ไม่ปกติ:
"?O^A^C / HTTP/1.1" 302
ต่อไปนี้เป็นคำขอการเข้าถึงที่ถูกต้องที่ฉันได้รับเมื่อฉันเชื่อมต่อโดยตรงกับhttps://host.example.org:8443 :
"GET / HTTP/1.1" 302
ในที่สุดฉันก็ควรพูดถึงว่าโฮสต์เสมือนทำงานได้อย่างสมบูรณ์แบบเมื่อฉันไม่ใช้ SSL
ฉันจะทำงานนี้ได้อย่างไร
ProxyPreserveHost On
ProxyPassReverse
ในฐานะที่เป็นบันทึกด้านข้างProxyRequests off
เป็นค่าเริ่มต้นจึงซ้ำซ้อน