http://blog.csdn.net/jacklondon/archive/2006/09/08/1194992.aspx 写道
Apache HTTP server 和 Tomcat server 整合,一般是希望对于用户只公布 Apache HTTP server 的网址,而 Tomcat 的网址则不公布,扮演一个幕后英雄的角色。访问 Tomcat 的 HTTP 请求,通过 Apache 转发给 Tomcat,Tomcat 处理完后,将 HTTP 回应返回给 Apache,然后 Apache HTTP 回应发回给用户端浏览器。
Apache HTTP server 和 Tomcat server 直接的 HTTP 数据传输,有很多种方法。
方法一,使用 mod_jk。很多网站上介绍到 Apache HTTP server 和 Tomcat server 整合的时候,都是在介绍 mod_jk.so 的使用,这是一种比较老的方法,并且需要额外下载 mod_jk。Apache 和 Tomcat 的默认配置文件都需要改动。
方法二, URL rewrite,也就是对于指定格式的 URL,转发给某个 Tomcat 的网址。这里所说的指定格式,是指 Apache 所使用的正则表达式,通俗地将,是一种类似 * 的一种比较高级通配符。这种方法不需要下在额外的文件,只需要配置 Apache。
方法三,mod_proxy_ajp,仅在 Apache 2.1 及以后的版本中可用,Apache 自带的一个新功能模块。这时 Apache 使用 Apache JServ Protocol 与 Tomcat 通讯。不需要下在额外的文件,需要改动Apache 和 Tomcat 的默认配置文件都需要改动。
方法四,mod_proxy。其实 mod_proxy 既可以做类似于 Wingate 一样的公司局域网共享上网代理,也可以做反向代理(Reverse proxy)。这里使用的是反向代理功能,用户端浏览器不需要把代理服务器改成这里的 Apache 地址。mod_proxy 是 Apache 自带功能,并且配置比较简单。
这篇文章介绍 Apache 反向代理转发 HTTP 请求到 Tomcat 的配置。比较简单实用。
下载 Apache web server 2.2,安装完成后,修改安装目录下的 conf/httpd.conf 文件,将以下两行前的注释字符 # 去掉。
#LoadModule proxy_module modules/mod_proxy.so
#LoadModule proxy_http_module modules/mod_proxy_http.so
在这个配置文件最后,加上
ProxyPass /app1 http://<tomcat_server_address>:port/url1
ProxyPassReverse /app1 http://<tomcat_server_address>:port/url1
保存配置文件后重新启动 Apache 就可以了。当用户访问
http://<apache_server_address>/app1 的时候,Apache 后台自动将请求转发给 Tomcat ,用户只认为 Apache server 就是他所要的应用服务器。
细心的作者可以看到,Tomcat 那边没有做任何改动,是不是说明,如果 Tomcat 换成 JBoss,或者 IBM Websphere,或者 BEA Weblogic ,也可以用 Apache 来转发呢?答案是,确实如此!!
这里需要解释的是, Apache 反向代理只做 HTTP 透明转发,因此,Tomcat 那边,如果使用 servelet API 获取 request url, server info,等等,都是 Tomcat 的。在Tomcat 上的 JSP 或者 HTML 文件里面,都应该是相对路径,不应该使用绝对路径,更不能使用带 Tomcat 地址的 URL。这应该不是太高的要求,对不?
目前最新版的 Apache 自带的 cache ,只能配置成 server 或者 virtual host 一级的,没有办法配置到 URL 一级。好在一般的 J2EE 应用性能问题,一般都在动态网页部分,静态网页很好,因此也没有太大关系。
对于要求比较高的应用,比如用户量多的新闻网站或者论坛网站,如果要求是用 Apache 缓冲后台的动态网页,比如说,我的首页可以允许缓存一分钟,则在这一分钟内,比如有两千次用户访问 http://somehost/index.jsp,只有第一次用户访问,Apache 会把请求转发到 Tomcat,其余的 999 次访问,都是由 Apache 从缓冲中取出这个页面返回给用户看。这样后台的动态网页服务器的负荷会小很多。以目前的 Apache 最新版本来说,使用反向代理达不到这个要求,应该使用 Apaceh 新建一个 virtual host ,换成使用 URL rewrite。这与题目无关,就此打住。
还有一篇javaeye的文章,里面还涉及到了虚拟主机的搭建:
http://www.iteye.com/topic/168982
去官网下载出了点问题,后来去太平洋下的,注意是下win32的,没人用linux开发吧?~
安装的时候又出了点问题,"requested failed",经过一阵google,使用 cmd->netstat -ano 发现进程PID***占用了80端口,打开任务管理器一看,丫的,QQMusic!,,,关掉后就OK乐。
然后按照这位csdn的朋友去测试,发现确实存在路径的问题,比如某些图片采用了绝对路径的。。。还有由于用到了url-rewrite,页面中相当一部分链接是采用jstl的<c:url 打出来的,就是说是tomcat的绝对路径了。比如<C:url value="/index.htm"/>
本来的访问地址是:http://localhost:8080/index.htm.
但是现在时apche做前端,所以浏览器的地址栏是http://localhost/index.htm,答案很明显,访问不到了。。。
还有url-rewrite里的out-boundle就是在jstl使用<C:url 标签时才重写URL的。。。纳闷中,,,
寻找解决方案ing...
10分钟后.......
经过一番努力发现时我搞错了:
经过仔细观察,只要
ProxyPass /app1 http://<tomcat_server_address>:port/url1
ProxyPassReverse /app1 http://<tomcat_server_address>:port/url1
这里的app1和url1[就是tomcat下的工程目录一直就可以解决这个问题]
比如我的文件:
ProxyPass /bbs http://localhost:9090/bbs
ProxyPassReverse /bbs http://localhost:9090/bbs
ProxyPass /wibo http://localhost:9090/wibo
ProxyPassReverse /wibo http://localhost:9090/wibo
ProxyPass / http://localhost:9090/
ProxyPassReverse / http://localhost:9090/
最后两个的意思是将root转发到tomcat得root,其他context只要app的名字和tomcat下的工程名一直即可!!!
apache查错方法:
写道
启动的时候就一直是the requested operation has failed错误.
于是开始检查:
运行-> cmd 进入到apache的bin目录。
输入httpd.exe -w -n "Apache" -k start
会提示配置文件的具体那行出错,找起来就方便多了。注:命令里的"Apache"是系统服务里apache服务的名称,及时换成你的。
主义apcahe2.2的服务名称是Apache2.2,使用netstat -ano方便查找到占用80端口的PID,再去任务管理器查看【需要选项设置列-PID】对应PID的进程,再结束掉重启即可。
分享到:
相关推荐
Apache、Tomcat以及mod_jk模块组成的集群架构是一种常见的高性能Web服务器和应用服务器组合,用于处理高并发和负载均衡的场景。在这个配置中,Apache作为前端服务器,通过mod_jk模块与后端的Tomcat应用服务器进行...
5. 更新Apache的VirtualHost配置,添加JKMount指令来指定哪些URL路径应由Tomcat处理。 在Tomcat侧,需要配置server.xml文件中的Connector元素,启用AJP支持。此外,为了监控和管理JK模块,可以安装和配置mod_status...
然后,需要配置一个JkMount指令,指定哪些URL路径应该被转发到Tomcat处理。 6. **配置Tomcat的server.xml**:在Tomcat的conf/server.xml文件中,添加一个Engine、Host和Context元素,定义mod_jk将连接的Tomcat实例...
以下是对Apache和Tomcat配置的详细总结: 1. **Apache与Tomcat集群的三种方式**: - **JK模垰**:通过mod_jk模块连接Apache和Tomcat,提供高效的数据传输和负载均衡。 - **HTTP代理**:Apache作为反向代理服务器...
总的来说,Apache+Tomcat集群的构建是一个涉及多个组件的系统工程,包括服务器安装、模块配置、负载均衡策略以及会话管理。理解并熟练掌握这些知识点,对于构建高效、可靠的Web服务环境至关重要。
总结来说,构建Linux下的Apache+Tomcat集群是一个涉及多方面知识的过程,包括服务器软件的选择与安装、模块配置、集群策略设定以及性能优化等。通过合理配置,可以实现高可用、高并发的Web服务环境。
总结起来,Apache 2.2.15与Tomcat 6.0的集群配置涉及Apache模块的加载、工作器定义、URL映射以及Tomcat的AJP连接器配置。通过这种方式,你可以创建一个高效、可扩展的Java Web服务环境,即使在高流量情况下也能保持...
"JDK + Tomcat + MySQL环境集成工具"是一个组合了三个核心组件的解决方案,它们分别是Java Development Kit(JDK)、Apache Tomcat服务器和MySQL数据库。这个集成工具旨在简化开发和部署过程,帮助开发者快速建立一...
此外,通过Apache可以实现IP过滤、URL重写等高级功能,这些都是Tomcat本身可能不具备的。 总之,Apache2与Tomcat的整合是提升服务器性能和管理灵活性的有效方式。通过合理的配置,可以解决Tomcat在IP过滤等特定需求...
本文档详细介绍了如何配置 Eclipse3.2、Tomcat5.5.17 以及 Oracle9 数据库,以搭建一个完整的 Java Web 开发环境。此配置过程虽然繁琐但十分重要,能够为开发者提供一个稳定且高效的开发平台。 #### 二、配置步骤 ...
- 确保Tomcat可以访问到Apache的`workers2.properties`配置文件,该文件定义了Apache与Tomcat之间的连接器信息。在Tomcat的`conf`目录下创建`workers2.properties`,并设置如下内容: ``` worker.list=worker1 ...
- 使用`JkMount`指令将特定URL映射到对应的worker,这样Apache会将这些请求转发给Tomcat。 5. **配置Tomcat**: - 修改Tomcat的server.xml文件,添加AJP监听器,配置监听端口和协议。 6. **启动和测试**: - ...
2. **版本8.5.x**:Tomcat 8.5.x系列是Java EE 7兼容的,引入了许多新特性,包括改进的NIO.2支持,更强大的SSL配置,以及对WebSocket协议的支持。 3. **64位版本**:对于64位Windows系统,选择对应的x64安装版能...
提供的配置文档,如`Apache_Tomcat_7配置.doc`和`Apache Tomcat 7.0.0 配置手稿.docx`,将更深入地介绍这些步骤,并可能包含一些高级主题,如集群、日志管理、错误处理等。仔细阅读这些文档,将有助于你更好地理解和...
【Eclipse3.2+Tomcat5.5.17+Oracle9i配置】文档主要讲解了如何在Eclipse集成开发环境中配置一个基于Java的Web开发环境,涉及到的主要步骤包括: 1. **安装Java开发环境**: - 首先,你需要安装SUN的JDK1.4或更高...