Apache以http_proxy方式连接Tomcat

修改Apache服务器安装目录下的配置文件httpd.conf

首先加载必要的Module:

LoadModule proxy_module modules/mod_proxy.so
LoadModule proxy_ajp_module modules/mod_proxy_ajp.so
LoadModule proxy_balancer_module modules/mod_proxy_balancer.so
LoadModule proxy_connect_module modules/mod_proxy_connect.so
LoadModule proxy_ftp_module modules/mod_proxy_ftp.so
LoadModule proxy_http_module modules/mod_proxy_http.so

 

添加最简单的跳转:

ProxyPass /example http://127.0.0.1:7087/example/

 

这句话就表示当试图请求Apache目录下的example站点时,Aapche就会跳转到Tomcat下的example站点,也就是Apache只起到了一个代理作用。。

 

这儿也可以添加负载均衡的配置:

ProxyPass /example balancer://example/
<Proxy balancer://example/>
BalancerMember
http://127.0.0.1:7087/example
#BalancerMember http://server3:8080/
</Proxy>

 

当然Apache连接Tomcat还有其它方式,参考如下:

http://www.ibm.com/developerworks/cn/opensource/os-lo-apache-tomcat/

http://tomcat.apache.org/tomcat-6.0-doc/proxy-howto.html

 

上面用到的都是正向代理,另外更经常用到是反向代理ProxyPassReverse

设置方法:

ProxyPass /example http://127.0.0.1:7087/example/

ProxyPassReverse /example http://127.0.0.1:7087/example/

正向代理和反向代理的区别:

http://man.chinaunix.net/newsoft/Apache2.2_chinese_manual/mod/mod_proxy.html

http://ooxx.me/reverse-proxy.orz

http://yahoon.blog.51cto.com/13184/162922/

如果使用反向代理无法代理成功,查看日志文件显示ap_proxy_connect_backend disabling worker for什么什么的问题,关闭selinux就可以了:

修改/etc/selinux/config

SELINUX=disabled

然后最好重启一下系统就OK了。。

最近又遇到老版本的Apache没有自动给请求的目录URL添加斜杠的问题,例如请求http://127.0.0.1/abc,不会变成http://127.0.0.1/abc/ 解决方法:

httpd.conf配置文件添加:

 

RewriteEngine On
RewriteCond %{REQUEST_FILENAME} -d
RewriteRule ^(.+[^/])$ $1/ [R]

 

当然前提是加载rewrite模块:

LoadModule rewrite_module modules/mod_rewrite.so

同时要注意的是httpd.conf里面的ServerName一定要写能够正确,因为这儿的rewrite 根据S erverN ame重写url

猜你喜欢

转载自tonl.iteye.com/blog/1682459