首页 诗词 字典 板报 句子 名言 友答 励志 学校 网站地图
当前位置: 首页 > 教程频道 > 服务器 > Apache >

apache 反向署理

2012-10-26 
apache 反向代理apache做反向代理服务器apache代理分为正向代理和反向代理:1 正向代理: 客户端无法直接访

apache 反向代理
apache做反向代理服务器apache代理分为正向代理和反向代理:1 正向代理: 客户端无法直接访问外部的web,需要在客户端所在的网络内架设一台代理服务器,客户端通过代理服务器访问外部的web(需要在客户端的浏览器中设置代理服务器)适用于: ①局域网的代理服务器(一般是网关,相当于squid的一般用法)②访问某个受限网络的代理服务器,如教育网访问某些国外网站需要找代理2 反向代理: 客户端能访问外部的web,但是不能访问目标web,目标web所在的网络内一台机器充当目标web的代理,客户端直接访问代理就像访问目标web一样(此代理对客户端透明,即客户端不用做如何设置,并不知道实际访问的只是代理而已,以为就是访问的目标)适用于: ①idc的某台目标机器只对内开放web,外部的客户端要访问,就让另一台机器做proxy,外部直接访问proxy即相当于访问目标②idc的目标机器的某个特殊的web服务跑在非正常端口如9000,而防火墙上只对外开放了80,此时可在80上做proxy映射到9000,外部访问80即相当于9000简单示意图如下apache 反向署理apache 反向署理?本例中机器192.168.0.114是我们的reverse proxy serverapache/2.0.63运行在其80端口上面有两个域名的虚拟主机www.a.orgwww.b.org要实现的效果是:访问 www.a.org 即相当于访问另一台机器192.168.0.115访问 www.b.org 即相当于访问本机的9000端口?apache的proxy功能由其proxy模块实现.加载模块有两种方式:静态和动态,现分别说明:一 静态加载静态加载,在编译apache时候编译进去,编译参数如下:"./configure" "-prefix=/usr/local/apache3" "--enable-so" "--enable-rewrite" "--with-mpm=prefork" "--enable-proxy" \ (这个参数即是代理模块启用)安装完成后查看模块列表/usr/local/apache3/bin/httpd -l显示Compiled in modules:core.cmod_access.cmod_auth.cmod_include.cmod_log_config.cmod_env.cmod_setenvif.cmod_proxy.cproxy_connect.cproxy_ftp.cproxy_http.cprefork.chttp_core.c.......编辑配置文件 httpd.conf在虚拟主机部分NameVirtualHost *:80<VirtualHost *:80>ServerAdmin webmaster@dummy-host.example.comServerName www.a.orgProxyRequests Off<Proxy *>Order deny,allowAllow from all</Proxy>ProxyPass / http://192.168.0.115/ProxyPassReverse / http://192.168.0.115/</VirtualHost>?<VirtualHost *:80>ServerAdmin webmaster@dummy-host.example.comServerName www.b.orgProxyRequests Off<Proxy *>Order deny,allowAllow from all</Proxy>ProxyPass / http://127.0.0.1:9000/ProxyPassReverse / http://127.0.0.1:9000/</VirtualHost>?二 动态加载动态加载:编译进一个已经装好了的apache中(编译为dso模块)已经装好的apache在 /usr/local/apache2进入apache源码的模块目录进行编译cd httpd-2.0.63/modules/proxy//usr/local/apache2/bin/apxs -c -i -a mod_proxy.c proxy_connect.c proxy_http.c proxy_util.c 从输出里面看到apache的modules目录下已经产生了mod_proxy.so,且已经在httpd.conf中激活了cd /usr/local/apache2/conf/ls ../modules/ 看到确实有mod_prxoy.so编辑配置文件vi httpd.conf修改如下加载模块LoadModule proxy_module modules/mod_proxy.so (这句是编译激活时产生的)LoadModule proxy_http_module modules/mod_proxy.so (这句是要手动添加的)虚拟主机的部分加上NameVirtualHost *:80<VirtualHost *:80>ServerAdmin webmaster@dummy-host.example.comServerName www.a.orgProxyRequests Off<Proxy *>Order deny,allowAllow from all</Proxy>ProxyPass / http://192.168.0.115/ProxyPassReverse / http://192.168.0.115/</VirtualHost>?<VirtualHost *:80>ServerAdmin webmaster@dummy-host.example.comServerName www.b.orgProxyRequests Off<Proxy *>Order deny,allowAllow from all</Proxy>ProxyPass / http://127.0.0.1:9000/ProxyPassReverse / http://127.0.0.1:9000/</VirtualHost>重启apache生效?注:如果不加LoadModule proxy_http_module modules/mod_proxy.so,则浏览器页面打不开,页面显示ForbiddenYou don't have permission to access / on this server.日志acess_log里面显示192.168.0.28 - - [03/Jun/2009:16:16:27 +0800] "GET /?sessionId=4293567494722637330&rand=1244014624405&CONTEXT=0&page=com.other.AjaxWhoWhatUpdate&xrand=1244016991554&wwRandId=1244014624405&wwBugId=2341&wwType=View HTTP/1.1" 403 315或者192.168.0.28 - - [03/Jun/2009:17:10:32 +0800] "GET / HTTP/1.1" 403 315即403错误日志error_log里面显示[Wed Jun 03 17:08:46 2009] [warn] proxy: No protocol handler was valid for the URL /. If you are using a DSO version of mod_proxy, make sure the proxy submodules are included in the configuration using LoadModule.

热点排行