<?xml version="1.0" encoding="UTF-8"?>
<rss version="2.0"
	xmlns:content="http://purl.org/rss/1.0/modules/content/"
	xmlns:wfw="http://wellformedweb.org/CommentAPI/"
	xmlns:dc="http://purl.org/dc/elements/1.1/"
	xmlns:atom="http://www.w3.org/2005/Atom"
	xmlns:sy="http://purl.org/rss/1.0/modules/syndication/"
	xmlns:slash="http://purl.org/rss/1.0/modules/slash/"
	>

<channel>
	<title>月影鹏鹏 &#187; tomcat</title>
	<atom:link href="http://jk.aiwaly.com/wp/tag/tomcat/feed" rel="self" type="application/rss+xml" />
	<link>http://jk.aiwaly.com</link>
	<description>不断探索,追求卓越,做快乐自己</description>
	<lastBuildDate>Thu, 29 Mar 2012 01:09:08 +0000</lastBuildDate>
	<generator>http://wordpress.org/?v=2.9</generator>
	<language>en</language>
	<sy:updatePeriod>hourly</sy:updatePeriod>
	<sy:updateFrequency>1</sy:updateFrequency>
			<item>
		<title>Apache通过mod_proxy联合Tomcat</title>
		<link>http://jk.aiwaly.com/wp/apache-mod_proxy-tomcat.html</link>
		<comments>http://jk.aiwaly.com/wp/apache-mod_proxy-tomcat.html#comments</comments>
		<pubDate>Mon, 30 Nov 2009 02:51:32 +0000</pubDate>
		<dc:creator>月影鹏鹏</dc:creator>
				<category><![CDATA[linux 应用]]></category>
		<category><![CDATA[web应用]]></category>
		<category><![CDATA[apache]]></category>
		<category><![CDATA[tomcat]]></category>

		<guid isPermaLink="false">http://jacky.scanmon.com/?p=1308</guid>
		<description><![CDATA[
Apache通过mod_proxy联合Tomcat
设想：总体有Apache发布网站，而JSP由Tomcat处理，交由Apache输出。其它内容由Apache输出不变。
两种方法：JK和mod_proxy。
想想我也不会大规模JSP，干脆直接使用mod_proxy够绿色，够灵活。
我悲剧地发现，它的Apache没有编译mod_proxy模块。没办法，只能去Apache官方网站下载对应版本的源码包到VPS，然后进入解包
后的modules/proxy目录，运行
#/usr/local/apache2/bin/apxs -c -i mod_proxy.c proxy_util.c mod_proxy_http.c
进行编译。注意啦，Apache2.2后，proxy被拆成N个小模块，要编译mod_proxy_http.c才能进行http的proxy哦。
关于编译选项说明：
-c 执行编译操作
-i 安装操作，安装一个或多个动态共享对象到服务器的modules目录
-a 自动增加一个LoadModule行到httpd.conf文件，以激活此模块，若此行存在则启用之
-A 与-a类似，但是它增加的LoadModule行前有井号前缀(#)
-e 需要执行编辑操作，可与-a和-A选项配合使用，与-i操作类似，修改httpd.conf文件，但并不安装此模块
然后在httpd.conf加上：
LoadModule proxy_module       modules/mod_proxy.so
LoadModule proxy_http_module  modules/mod_proxy_http.so
在相应的虚拟主机的&#60;virtualhost&#62;加上：
ProxyPass / http://localhost:8080/
或者在2.2.5之后，可以这样加，使得Apache只处理servlet和.jsp和.do文件
ProxyPassMatch ^/servlet/(.*)$ http://localhost:8080/servlet/$1
ProxyPassMatch ^/(.*\.(jsp&#124;do))$ http://localhost:8080/$1
月影鹏鹏认为 采用 proxy 的方式整合 tomcat的方式优点在于，可以方便的用其他软件替换前端的apche 或后端的tomcat，比如  用jboss 将tomcat 替换掉，其次就是 动态内容和静态内容可以方便的分离到台主机上。  月影鹏鹏在 http://www.homhow.com  上曾经实现过稳定的商业应用。在http://www.scanmon.com上也使用 proxy 方式 分离动静态的
注：由于Apache中正则表达式匹配的bug，“ProxyPassMatch ^(/.*\.(jsp&#124;do))$ http://localhost:8080$1”会出错哦，所以采用
上面第二行的方案。
配置Tomcat：
serve.xml的“appBase”改为网站目录，“name”的相应的域名为localhost，因为代理模式是请求相应URL嘛。
但是如果有多个虚拟主机的话，就有点问题了。我遇到的问题是，如果代理的URL和访问的URL的目录级别不同，就会出现Tomcat输
出503错误。原因未知，解决方法未知。所以我采用虚拟主机的方法来管理多个域名站点。
首先，我们把Tomcat和Apache的虚拟主机设置成相同的路径。
Apache的就不罗嗦了，Tomcat如下配置：
&#60;Host appBase=”虚拟主机的目录” autoDeploy=”true” name=”虚拟主机的域名” unpackWARs=”true”
xmlNamespaceAware=”false” xmlValidation=”false”&#62;
&#60;!– SingleSignOn valve, share authentication between web applications
Documentation at: /docs/config/valve.html –&#62;
&#60;!–
&#60;Valve className=”org.apache.catalina.authenticator.SingleSignOn” /&#62;
–&#62;
&#60;!– [...]]]></description>
		<wfw:commentRss>http://jk.aiwaly.com/wp/apache-mod_proxy-tomcat.html/feed</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
	</channel>
</rss>

