Относятся к некоторым из моих предыдущих вопросов.
Теперь у меня есть установка, которая мне очень нравится:
Apache httpd прослушивает порт 80, принимая соединения http и https. Несколько экземпляров Tomcat, работающих на нескольких портах AJP.
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 для https-соединений с использованием аналогичного тега VirtualHost;
<VirtualHost _default_:443>
JkMount /demo* demoTomcat
JkMount /test* testTomcat
JkMount /* rootTomcat
... SSL Stuff follows ....
У меня теперь проблема с тем, что мой сертификат SSL предназначен только для www.mydomain.com, а НЕ mydomain.com.
I ' Мне посоветовали использовать следующие вызовы 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
в браузер, и я просто получаю свой сайт как обычно. URL-адрес не меняется на http://www.mydomain.com
, и когда я начинаю получать доступ к защищенным областям, я получаю предупреждения о том, что mydomain.com
НЕ защищен и является вручил мне сертификат с другого веб-сайта под названием www.mydomain.com
(почему это вообще проблема, и он не может просто использовать какую-то логику, чтобы реализовать тот же сайт, я не знаю! ).
Могу ли я разместить правила mod_rewrite не в том месте? Я читал, что это должно работать, перезаписи должны изменить URL-адрес на www. а затем перейти к материалу mod_jk для чего-нибудь еще?