7

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

これで、非常に気に入ったセットアップができました。

httpおよびhttps接続を受け入れるポート80でリッスンしているApachehttpd。複数の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>

そして、これはすべてうまくいきます。同様のVirtualHostタグを使用して、SSLをセットアップして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]

これらは、mod_jkルールの前後にhttpd.confファイルに配置しました。Apacheは最初、RewriteEngineが無効なコマンドであると不平を言っていましたが、LoadModuleコマンドを最初に思い出したときに消えました:)これで、Apacheは正常に再起動し、サーバーが起動して要求を受け入れ、すべてが以前と同じように機能します...しかしそれはそれだけで、これらのmod_rewriteコマンドは効果がないように見えますか?

ブラウザに入力http://mydomain.comすると、通常どおりWebサイトが表示されます。URLがに変更されていないようでhttp://www.mydomain.com、セキュリティで保護された領域にアクセスし始めると、セキュリティで保護されていmydomain.comないという警告が表示され、他のWebサイトから証明書が提供されますwww.mydomain.com(これがまったく問題であり、単に使用できない理由同じサイトを実現するためのいくつかのロジック、私にはわかりません!)。

mod_rewriteルールを間違った場所に配置していますか?私はそれが機能するはずだと読みました、書き直しはURLをwwwに変更するはずです。その後、mod_jkのものに渡してさらに何かをしますか?

4

1 に答える 1

2

このスニペットは、apache構成の最後のjkmount行の直後に配置します。

    <IfModule mod_rewrite.c>
        RewriteEngine On
        RewriteCond %{HTTPS} =on
        RewriteCond %{HTTP_HOST} !^www\.example\.name$ [NC]
        RewriteRule ^ https://www.example.name%{REQUEST_URI} [NE,L,R=301]
    </IfModule>

このルールが実行しているのは、IFスキームがhttpsであり、httpホストが301http ステータスでリクエストをリダイレクトしないwww.mydaomain.com 場合です。https://example.com/foohttps://www.example.com/foo

于 2011-03-23T13:20:43.590 に答える