J'essaie de mettre en place un serveur avec plusieurs applications Web qui seront toutes servies via apache VirtualHost (apache fonctionnant sur le même serveur). Ma principale contrainte est que chaque application web doit utiliser le cryptage SSL. Après avoir googlé pendant un certain temps et examiné d'autres questions sur stackoverflow, j'ai écrit la configuration suivante pour 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>
Même si https://host.example.org:8443 est accessible, https://host.example.org ne l'est pas, ce qui va à l'encontre de l'objectif de ma configuration d'hôte virtuel. Firefox se plaint que, même s'il s'est correctement connecté au serveur, la connexion a été interrompue. Je reçois également l'avertissement suivant dans le fichier error.log d'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
Sur l'application Web (un serveur Tomcat), le journal d'accès affiche une étrange demande d'accès:
"?O^A^C / HTTP/1.1" 302
Voici la demande d'accès correcte que j'obtiens lorsque je me connecte directement à https://host.example.org:8443 :
"GET / HTTP/1.1" 302
Enfin, je dois également mentionner que l'hôte virtuel fonctionne parfaitement bien lorsque je n'utilise pas SSL.
Comment puis-je faire fonctionner cela?
ProxyPreserveHost On
est presque toujours faux, inutile et se casse presque toujoursProxyPassReverse
. Comme note latéraleProxyRequests off
est la valeur par défaut, donc redondante.