SSL连接对Apache服务器上的每个页面都起作用,除了这些服务器用于Tomcat。 Tomcat在http连接上工作良好。
设置:
什么是工作
如果我尝试通过http连接到tomcat,一切都可以。 JkMount指令中指定的每个页面都转发给Tomcat,而其他所有页面都是Apache的责任。 我有两个虚拟主机 – 一个用于端口80和一个用于443. 80的工作configuration是:
<VirtualHost *:80> ServerName ******* JkMount /cas ajp13_worker JkMount /cas/* ajp13_worker </VirtualHost>
我的问题是什么
当我尝试使用与端口443类似的虚拟主机configuration的HTTPS – 在Apache日志中有一个条目:
File does not exist: ****/apache2/htdocs/cas
configuration文件
端口443上的vhost设置:
<VirtualHost ****:443> ServerName ******* JkMount /cas ajp13_worker JkMount /cas/* ajp13_worker </VirtualHost>
在httpd.conf中,mod_jk的部分是:
JkWorkersFile ****/tomcat-7.0.23/conf/workers.properties JkLogFile ****/apache2/logs/mod_jk.log JkLogLevel info JkLogStampFormat "[%a %b %d %H:%M:%S %Y] " (I've read that I need the following lines ... ) JkExtractSSL On JkHTTPSIndicator HTTPS JkSESSIONIndicator SSL_SESSION_ID JkCIPHERIndicator SSL_CIPHER JkCERTSIndicator SSL_CLIENT_CERT
在httpd-ssl.conf中,我已经指定了证书path… https对除了Tomcat以外的所有页面都正常工作。
DocumentRoot在httpd.conf中指定。
问题
什么是控制Apache是否在DocumentRoot目录中search或将请求转发给Tomcat? 我究竟做错了什么?
谢谢 :)
检查apache2ctl -S的输出 – 第一个在端口上加载的第二个SSL虚拟主机将获取请求,而不是所需的虚拟主机。
什么是控制Apache是否在DocumentRoot目录中search或将请求转发到Tomcat?
两个因素: <Directory>和相关指令的顺序和定义,以及JKMount位置。
我很好奇为什么你认为你需要两个 – 只是使用/ cas / *(如果/ cas不存在,apache将redirect/ cas的请求到/ cas /自动,基于DirectorySlash设置,默认为On)
httpd.conf中的DocumentRoot只负责全局的Apache设置。 如果你在你的服务器上设置VirtualHostconfiguration,它不应该干扰你的VH。
我build议现在增加您的日志LogLevel然后检查日志文件。 另外,如果它还没有在生产性服务器上,那么也可以把DocumentRoot行放在httpd.conf中。
我没有使用mod_jk很长一段时间,因为我发现configuration本身不是很有趣。 我切换到mod_proxy这种反向代理,因为它更直观。 在Tomcat的情况下,我使用mod_proxy_ajp并用<IfModule mod_proxy_ajp.c>容器包含元素。 但这可能是个人风味的事情。 如果你不知道为什么,你可以节省时间试试。