it-swarm.com.de

mod_rewrite mit Apache -> mod_jk -> tomcat

Bezogen auf einige meiner früheren Fragen.

Ich habe jetzt ein Setup, das mir gefällt.

Apache httpd lauscht auf Port 80 und akzeptiert http- und https-Verbindungen. Mehrere Tomcat-Instanzen laufen auf mehreren AJP-Ports.

Mod_Jk sendet verschiedene URL-Anforderungen an verschiedene Tomcat-Instanzen.

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

Dies wird mit der folgenden Konfiguration in httpd.conf (oder den enthaltenen Unterdateien) erreicht.

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>

Und das alles funktioniert super. Ich habe auch SSL-Setup und läuft für https-Verbindungen mit einem ähnlichen VirtualHost-Tag;

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

Was ich jetzt Probleme habe, ist, dass mein SSL-Zertifikat nur für www.mydomain.com und NICHT für mydomain.com ist.

Mir wurde empfohlen, die folgenden mod_rewrite-Aufrufe zu verwenden.

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]

Ich habe diese vor und nach den mod_jk-Regeln in der httpd.conf-Datei platziert. Apache hat sich zuerst beschwert, dass RewriteEngine ein ungültiger Befehl ist, aber das ging weg, als ich mich zuerst an den LoadModule-Befehl erinnerte :) Jetzt startet Apache einwandfrei neu, der Server startet und akzeptiert Anfragen und alles funktioniert so, wie es funktioniert ... aber das ist nur scheinen diese mod_rewrite-befehle keine wirkung zu haben?

Ich tippe http://mydomain.com in den Browser und erhalte meine Website wie gewohnt. Die URL ändert sich anscheinend nicht zu http://www.mydomain.com. Wenn ich auf die gesicherten Bereiche zugreife, erhalte ich die Warnung, dass mydomain.com NICHT gesichert ist und mir ein Zertifikat von einer anderen Website mit dem Namen www.mydomain.com ausstellt. (Warum dies überhaupt ein Problem ist und es nicht einfach eine Logik verwenden kann, um dieselbe Site zu realisieren, weiß ich nicht!).

Platziere ich die mod_rewrite-Regeln am falschen Ort? Ich habe gelesen, dass es funktionieren sollte, die Umschreibungen sollten die URL auf www ändern. und dann für irgendetwas weiter zum mod_jk Zeug durchgehen?

1
Nick Foote

Ich hatte ein ähnliches Problem mit mod_rewrite und mod_proxy. https://serverfault.com/questions/296159/need-to-redirect-to-static-url-based-off-of-string-patter-match-in-uri

Das Problem ist, dass Sie die .htaccess-Datei mit Ihrer Proxy-Regel umgehen. Das heißt, wenn Sie Ihre Datei in Ihrem Webstamm ablegen, wird sie nicht angezeigt, da Sie einen Proxy für rootTomcat und nicht für Ihr Apache-Doc-Stammverzeichnis haben.

2
organicit