`
hansha2
  • 浏览: 35151 次
  • 性别: Icon_minigender_1
  • 来自: 北京
社区版块
存档分类
最新评论

apache 转发

 
阅读更多

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下的工程目录一直就可以解决这个问题]

 

比如我的文件:

Java代码  收藏代码
  1. ProxyPass                  /bbs http://localhost:9090/bbs  
  2.   
  3. ProxyPassReverse  /bbs http://localhost:9090/bbs  
  4.   
  5. ProxyPass                  /wibo http://localhost:9090/wibo  
  6.   
  7. ProxyPassReverse  /wibo http://localhost:9090/wibo  
  8.   
  9. ProxyPass                  / http://localhost:9090/  
  10.   
  11. 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转发服务器

    一、Apache转发服务器的工作原理 在反向代理模式下,用户直接访问的是Apache服务器,而Apache服务器再将用户的请求转发给实际提供服务的后台服务器。后台服务器对请求做出响应后,结果会经由Apache返回给用户。这种...

    apache转发配置

    Apache配置可以采用两种不同的方式实现转发,一种是直接采用ProxyPassReverse方式,一种是通过rewrite方式

    Windows 环境下Apache HTTP Server 2.2的安装和使用apache转发weblogic集群

    NULL 博文链接:https://xiaoxihai123.iteye.com/blog/1284032

    apache phpmyadmin php mysql 域名转发

    标题 "apache phpmyadmin php mysql 域名转发" 涉及到的是在Web服务器环境中配置Apache,以便通过PHPMyAdmin访问MySQL数据库,并实现域名转发。这是一个常见的任务,特别是对于那些需要远程管理数据库或者搭建多站点...

    Apache&weblogic;安装及配置反向代理转发

    Apache 和 Weblogic 安装及配置反向代理转发 在本文中,我们将详细介绍如何安装和配置 Apache 和 Weblogic,以实现反向代理转发。该配置可以将 Weblogic 服务器的内容转发到 Apache 服务器上,从而提高网站的性能和...

    apache-tomcat-7.0.20.exe

    apache可以支持php\cgi\perl,但是要使用java的话,你需要tomcat在apache后台支撑,将java请求由apache转发给tomcat处理。 apache是web服务器,Tomcat是应用(java)服务器,它只是一个servlet(jsp也翻译成servlet)...

    Apache代理转发配置

    Apache代理转发配置 

    apache web整合Tomcat工具Linux版

    它作为Apache与Tomcat之间的桥梁,接收Apache转发的动态请求,并将其传递给Tomcat进行处理。mod_jk通过JKMount配置指令,可以映射特定的URL到Tomcat中的Web应用程序,使得Apache可以无缝地处理静态内容和动态内容。 ...

    apache+tomcat整合配置

    这样,Tomcat可以通过AJP协议接收Apache转发的请求: ```xml ``` 5. **测试与优化** 保存并重启Apache和Tomcat后,访问你的域名,如果配置正确,你应该能看到Tomcat部署的应用。为了提高性能,你可以调整AJP...

    Apache2.4+tomcat7集群

    在集群中,多台Tomcat服务器可以同时运行,共同处理由Apache转发过来的请求,以实现负载均衡。 mod_jk是Apache的一个模块,它实现了Apache与Tomcat之间的通信协议AJP(Apache JServ Protocol)。在这个场景中,mod_...

    tomcat+apache整合插件大全及整合方法

    - 启动Apache和Tomcat,访问测试页面,确认请求能正确地从Apache转发到Tomcat并返回结果。 通过以上步骤,Apache和Tomcat就能协同工作,提供高效的Web服务。在实际部署中,根据具体需求可能还需要调整各种参数,...

    Win2003中apache2整合tomcat5和iis6文档

    现在,当用户访问http://localhost/myapp时,请求会被Apache转发到Tomcat,从而运行Java应用程序,而静态内容仍由IIS处理。 整个过程虽然复杂,但通过逐步配置,可以实现IIS、Apache和Tomcat的无缝集成,让它们在同...

    apache,resin整合说明

    1. 在Resin的conf/resin.xml文件中,添加一个代理连接器(proxy connector),用于接收Apache转发的请求。例如: ```xml &lt;proxy name="apache" host="localhost" port="80"/&gt; ``` 这将设置Resin监听8888端口...

    Apache2.2和Tomcat7集成负载均衡(软件和教程)

    - 配置模块:启用mod_proxy、mod_proxy_ajp和mod_proxy_balancer等模块,这些模块允许Apache转发请求到Tomcat。 2. **安装和配置Tomcat7**: - 安装Tomcat7:下载并解压Tomcat7的二进制文件,然后根据官方文档...

    Apache Tomcat JBOSS Nginx区别

    Apache 可以支持 PHP 和 Perl 等语言,但是如果要使用 Java,则需要 Tomcat 在 Apache 后台支撑,将 Java 请求由 Apache 转发给 Tomcat 处理。Apache 和 Tomcat 都是 Apache 组织开发的,都是免费的,都有 HTTP 服务...

    ApacheTomcat整合教程

    NULL 博文链接:https://newleague.iteye.com/blog/693279

    利用Apache为WebLogic提速

    `Weblogic.conf`文件中的配置项如`WebLogicHost`和`WebLogicPort`分别用于指定WebLogic服务器的IP地址和监听端口,`MatchExpression`则用于定义Apache转发请求的规则,例如将所有以"/Web Root/"开头或扩展名为".jsp...

    weblogic Apache

    5. 启动和测试:重启Apache服务器,然后通过浏览器访问测试页面,检查是否能成功通过Apache转发到WebLogic。 这种集成方式提供了许多优势,如性能优化、负载均衡、安全增强以及日志集中管理等。但同时,也需要谨慎...

    weblogic+apache 安装,配置

    - 测试访问通过Apache转发至WebLogic的应用。 #### 六、总结 本文详细介绍了在AIX操作系统上如何安装配置JDK 1.6、Apache HTTP Server以及WebLogic 10,并实现了三者的集成。这种集成方式可以有效提高Web应用程序...

Global site tag (gtag.js) - Google Analytics