web-dev-qa-db-fra.com

mod_rewrite avec Apache -> mod_jk -> tomcat

Relatif à certaines de mes questions précédentes.

J'ai maintenant une configuration que j'aime bien;

Apache httpd en écoute sur le port 80 acceptant les connexions http et https. Plusieurs instances de Tomcat s'exécutant sur plusieurs ports AJP.

Mod_Jk envoie différentes requêtes d'URL à différentes instances de Tomcat;

www.mydomain.com/demo -> Tomcat:8101
www.mydomain.com/test -> Tomcat:8102
www.mydomain.com/     -> Tomcat:8100

Ceci est réalisé avec la configuration suivante dans httpd.conf (ou les sous-fichiers inclus);

LoadModule jk_module modules/mod_jk.so
JkWorkersFile conf/workers.properties
JkLogFile logs/mod_jk.log
JkLogLevel info

NameVirtualHost *:80

<VirtualHost *:80>
    JkMount /demo* demoTomcat (workers.properties not shown)
    JkMount /test* testTomcat
    JkMount /* rootTomcat
</VirtualHost>

Et tout cela fonctionne très bien. J'ai également une configuration SSL et une exécution pour les connexions https utilisant une balise VirtualHost similaire;

<VirtualHost _default_:443>
    JkMount /demo* demoTomcat 
    JkMount /test* testTomcat
    JkMount /* rootTomcat
... SSL Stuff follows ....

Ce qui me pose problème à présent, c’est que mon certificat SSL s’applique uniquement à www.mondomaine.com et non à mondomaine.com.

On m'a conseillé d'utiliser les appels suivants de mod_rewrite;

Options +FollowSymlinks
LoadModule rewrite_module modules/mod_rewrite.so
RewriteEngine On
RewriteCond %{HTTP_Host} !^(www\.|$) [NC]
RewriteRule ^ http://www.%{HTTP_Host}%{REQUEST_URI} [PT,L]

Je les ai placés avant et après les règles mod_jk dans le fichier httpd.conf. Apache se plaignait tout d'abord que RewriteEngine était une commande non valide, mais cela a disparu lorsque je me suis d'abord souvenu de la commande LoadModule :) Maintenant, Apache redémarre correctement, le serveur démarre et accepte les demandes. Tout fonctionne comme prévu ... mais c'est tout. juste cela, ces commandes mod_rewrite semblent n'avoir aucun effet?

Je tape http://mydomain.com dans le navigateur et mon site Web est comme d'habitude. L'URL ne semble pas changer en http://www.mydomain.com et lorsque je commence à accéder aux zones sécurisées, je reçois des avertissements indiquant que mydomain.com n'est PAS sécurisé et me fournit un certificat d'un autre site Web appelé www.mydomain.com. (pourquoi c'est un problème et on ne peut pas simplement utiliser une logique pour réaliser que c'est le même site, je ne sais pas!).

Est-ce que je mets les règles mod_rewrite au mauvais endroit? J'ai lu que cela devrait fonctionner, les réécritures devraient changer l'URL en www. et ensuite passer à la mod_jk pour plus rien?

1
Nick Foote

J'ai rencontré un problème similaire avec mod_rewrite et mod_proxy. https://serverfault.com/questions/296159/need-to-redirect-to-static-url-based-off-of-string-patter-match-in-uri

Le problème est que vous ignorez le fichier .htaccess avec votre règle de proxy. Cela signifie que si vous placez votre fichier dans votre racine Web, il ne sera pas visible car vous utilisez un proxy/rootTomcat et non votre racine de documentation Apache.

2
organicit