apache反向代理---帅

字体大小: 中小 标准 ->行高大小: 标准
这里的反向代理也即《Apache HTTP Server 与 Tomcat 的三种连接方式介绍》中所指的第三种连接方式http_proxy,Apache 自带的 mod_proxy 模块使用代理技术来连接 Tomcat。

这种反向代理功能,即用户端浏览器不需要把代理服务器改成这里的 Apache 地址。

修改D:\Program Files\Apache Software Foundation\Apache2.2\conf\httpd.conf配置很简单

1.先去掉下面两行的注释

LoadModule proxy_module modules/mod_proxy.so

LoadModule proxy_http_module modules/mod_proxy_http.so

 

2.然后在最后增加

ProxyPass /images !
ProxyPass /css !
ProxyPass /js !
ProxyPass / http://localhost:8080/这个也可以写为:

ProxyPass         /oa    http://localhost:8080/oa
ProxyPassReverse  /oa    http://localhost:8080/oa

也可以连续增加以上两行,就是多个tomcat启动

ProxyPass /meb http://192.168.6.103:8081/meb
ProxyPassReverse /meb http://192.168.6.103:8081/meb

……

ProxyPass、 ProxyPassReverse 这两个配置时,如果不加ProxyPassReverse 这行,则IE地址栏里面显示就是tomcat所对就的地址,如http://localhost/oa/后则地址栏里面显示的就是http://localhost:8080/oa/,反之,加上ProxyPassReverse这行,则显示的就是apache的地址,把原tomcat给隐藏了

 

在这个配置中,我们把所有 http://localhost 的请求代理到 http://localhost:8080/ ,这也就是 Tomcat 的访问地址,除了 images、css、js 几个目录除外。


最终的例子:

<VirtualHost  127.0.0.1:80> 
	DocumentRoot "E:\AppServ\www\XX" 
	<Directory "E:\AppServ\www\XX">
	     Options FollowSymLinks
	    AllowOverride all
	    Order deny,allow
	    allow from all
	</Directory>
	ServerName www.XX.com
	ProxyPass /htmls http://127.0.0.1:8080/yx/
         ProxyPassReverse /htmls http://127.0.0.1:8080/yx/

</VirtualHost>

还有用 .htaccess 文件也可以实现这效果
RewriteEngine On
RewriteBase /

RewriteRule htmls/([0-9]+)\.html$ http://127.0.0.1:8080/yx/htmls?id=$1 [P] 
RewriteRule [0-9]{8}/([0-9]+)\.html$ http://127.0.0.1:8080/yx/htmls?id=$1 [P] 
RewriteRule ls/([0-9]+)_([0-9]+)_([0-9]+)\.html plus/list.php?typeid=$1&TotalResult=$2&PageNo=$3
RewriteRule ls/([0-9]+)\.html plus/list.php?typeid=$1
ErrorDocument 404 /nofound.php

这是phpgz站的大概配置, 前端用 java 显示, 后端用php 实现的dedecms.

目前最新版的 Apache 自带的 cache ,只能配置成 server 或者 virtual host 一级的,没有办法配置到 URL 一级。好在一般的 J2EE 应用性能问题,一般都在动态网页部分,静态网页很好,因此也没有太大关系。

对于要求比较高的应用,比如用户量多的新闻网站或者论坛网站,如果要求是用 Apache 缓冲后台的动态网页,比如说,我的首页可以允许缓存一分钟,则在这一分钟内,比如有两千次用户访问 http://localhost:8080/oa,只有第一次用户访问,Apache 会把请求转发到 Tomcat,其余的 999 次访问,都是由 Apache 从缓冲中取出这个页面返回给用户看。这样后台的动态网页服务器的负荷会小很多。以目前的 Apache 最新版本来说,使用反向代理达不到这个要求,应该使用 Apaceh 新建一个 virtual host ,换成使用 URL rewrite。这与题目无关,就此打住。

此文章由 http://www.ositren.com 收集整理 ,地址为: http://www.ositren.com/htmls/68351.html