我正在尝试将带有.jsp扩展名的文件定向到tomcat。 否则,我希望Apache直接提供文件(没有tomcat)。 目前我有一个test.jsp应该创build一个HTML页面与正文中的当前date。 相反,当我去那个.jsp我看到JK状态pipe理器。 mod_jk.logs只显示init_jk::mod_jk.c (3365): mod_jk/1.2.35 initialized 。
我的服务器上有tomcat和apache安装程序。 Apache在80上运行,tomcat在8080上运行。localhost:8080显示tomcat的欢迎页面。 我下载了tomcat-connectors-1.2.35-windows-i386-httpd-2.2.x并将mod_jk.so复制到C:\apache\modules 。
然后,我将LoadModule jk_module modules/mod_jk.so添加到我的httpd.conf 。 我重新启动Apache,模块加载得很好。
接下来,我下载了mod_jk源文件来获取workers.properties文件。 我将workers.properties复制到C:\apache\confg 。 然后我加了这个用户,
workers.tomcat_home="C:/Program Files/Apache Software Foundation/Tomcat 7.0" workers.java_home="C:/Program Files/Java/jdk1.7.0_03" worker.list=ajp13 worker.ajp13.port=8080 worker.ajp13.host=localhost worker.ajp13.type=ajp13 worker.ajp13.socket_timeout=10
当我尝试在我的httpd.conf中使用ajp13用户时,在我的mod_jk.log出现以下错误,
[Wed Mar 28 13:08:51 2012] [2196:4100] [info] ajp_connection_tcp_get_message::jk_ajp_common.c (1258): (ajp13) can't receive the response header message from tomcat, network problems or tomcat (127.0.0.1:8080) is down (errno=60) [Wed Mar 28 13:08:51 2012] [2196:4100] [error] ajp_get_reply::jk_ajp_common.c (2117): (ajp13) Tomcat is down or refused connection. No response has been sent to the client (yet) [Wed Mar 28 13:08:51 2012] [2196:4100] [info] ajp_service::jk_ajp_common.c (2614): (ajp13) sending request to tomcat failed (recoverable), (attempt=1)
接下来我更新我的httpd.conf,
JkWorkersFile C:/apache/conf/workers.properties JkLogFile C:/apache/logs/mod_jk.log JkLogLevel info JkLogStampFormat "[%a %b %d %H:%M:%S %Y] "
此外,我添加JkMount /*.jsp jk-status到我的虚拟主机这样,
<VirtualHost 192.168.5.250:80> JkMount /*.jsp jk-status #JkMount /*.jsp ajp13 ServerName bgsisson.com ServerAlias www.bgsisson.com DocumentRoot C:/www/resume </VirtualHost>
我想我需要包含一个uriworkermap.properties文件,但这是我陷入困境。
我在bgsisson.com/test.jsp上提供了一个testing.jsp当我使用JkMount /*.jsp jk-status和502 Bad Gateway时,它显示了JK状态pipe理器当我使用JkMount /*.jsp jk-status时JkMount /*.jsp ajp13
test.jsp的
<%-- use the 'taglib' directive to make the JSTL 1.0 core tags available; use the uri "http://java.sun.com/jsp/jstl/core" for JSTL 1.1 --%> <%@ taglib uri="http://java.sun.com/jstl/core" prefix="c" %> <%-- use the 'jsp:useBean' standard action to create the Date object; the object is set as an attribute in page scope --%> <jsp:useBean id="date" class="java.util.Date" /> <html> <head><title>First JSP</title></head> <body> <h2>Here is today's date</h2> <c:out value="${date}" /> </body> </html>
你的configuration非常接近,只有几件事情是closures的。
首先,AJP不能通过端口8080运行,默认情况下,它运行在端口8009上。它是一个不同的连接器。 您可以通过查看您的server.xml文件来查看如下所示的行,从而validation设置了哪个端口AJP:
<Connector port="8009" redirectPort="8443" protocol="AJP/1.3"/>
所以你要改变你的worker.ajp13.port=8080指令到worker.ajp13.port=8009
其次,你的httpd.conf有点closures:
JkAutoAlias <path_to_tomcat>/webapps JkMount /<your_webapp>/*.jsp ajp13
Tomcat连接器文档很好地解释了JKAutoAlias:
自动将Web应用程序上下文目录别名到Apache文档空间中。 由于使用这个指令,应该注意确保只有静态内容通过httpd服务。 httpd提供的任何静态内容都将绕过应用程序web.xml中定义的任何安全约束。 有关inheritance规则,请参阅:JkMountCopy。 没有默认值。