与我之前的一些问题有关。
我现在有一个我非常喜欢的设置;
Apache httpd 在端口 80 上侦听接受 http 和 https 连接。在多个 AJP 端口上运行的多个 Tomcat 实例。
Mod_Jk 正在向不同的 tomcat 实例发送不同的 url 请求;
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 标记为 https 连接设置和运行 SSL;
<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
在浏览器中输入内容,然后照常获取我的网站。url 似乎没有改变http://www.mydomain.com
,当我开始访问安全区域时,我收到不安全的警告,mydomain.com
并且正在为我提供来自其他名为的网站的证书www.mydomain.com
(为什么这根本是一个问题,它不能只使用一些逻辑来实现它的同一个站点,我不知道!)。
我是否将 mod_rewrite 规则放在错误的位置?我读过它应该可以工作,重写应该将 url 更改为 www。然后传递给 mod_jk 的东西以获取更多信息?