修改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