以前の質問のいくつかに関連しています。
今、私は非常に好きなセットアップを持っています。
Httpおよびhttps接続を受け入れるポート80でリッスンするApache httpd。複数のAJPポートで実行されている複数のTomcatインスタンス。
Mod_Jkは、さまざまなURLリクエストをさまざまなTomcatインスタンスに送信しています。
www.mydomain.com/demo -> Tomcat:8101
www.mydomain.com/test -> Tomcat:8102
www.mydomain.com/ -> Tomcat:8100
これは、httpd.conf(またはインクルードされたサブファイル)の次の構成で実現されます。
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>
そして、これはすべてうまくいきます。また、SSLをセットアップし、同様のVirtualHostタグを使用してhttps接続を実行しています。
<VirtualHost _default_:443>
JkMount /demo* demoTomcat
JkMount /test* testTomcat
JkMount /* rootTomcat
... SSL Stuff follows ....
私が今問題になっているのは、SSL証明書がwww.mydomain.com専用であり、mydomain.com用ではないということです。
次の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]
Httpd.confファイルのmod_jkルールの前後にこれらを配置しました。 Apacheは最初、RewriteEngineが無効なコマンドであると不平を言っていましたが、LoadModuleコマンドを最初に思い出したときに消えました:) Apacheは正常に再起動し、サーバーが起動して要求を受け入れ、すべてが使用する方法で動作します...それだけで、これらのmod_rewriteコマンドは効果がないように見えますか?
ブラウザにhttp://mydomain.com
と入力すると、通常どおりWebサイトが表示されます。 URLがhttp://www.mydomain.com
に変更されていないようで、保護された領域にアクセスし始めると、mydomain.com
が保護されておらず、www.mydomain.com
という他のWebサイトから証明書を提供しているという警告が表示されます(これがまったく問題であり、同じサイトを実現するために何らかのロジックを使用することができない理由はわかりません!).
Mod_rewriteルールを間違った場所に配置していますか?私はそれが機能するはずだと読みました、書き換えはURLをwwwに変更する必要があります。そして、さらに何かのためにmod_jkのものにパススルーしますか?
Mod_rewriteとmod_proxyを使用して同様の問題に直面しました。 https://serverfault.com/questions/296159/need-to-redirect-to-static-url-based-off-of-string-patter-match-in-uri
問題は、プロキシルールで.htaccessファイルをバイパスしていることです。つまり、ファイルをWebルートに配置しても、ApacheのドキュメントルートではなくrootTomcatにプロキシするため、ファイルは表示されません。