web-dev-qa-db-ja.com

Apacheでのmod_rewrite-> mod_jk-> tomcat

以前の質問のいくつかに関連しています。

今、私は非常に好きなセットアップを持っています。

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のものにパススルーしますか?

1
Nick Foote

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にプロキシするため、ファイルは表示されません。

2
organicit