`
zhengdl126
  • 浏览: 2511361 次
  • 性别: Icon_minigender_1
  • 来自: 深圳
社区版块
存档分类

Apache中的mod_proxy模块应用

阅读更多

Apache模块 mod_proxy手册:http://lamp.linux.gov.cn/Apache/ApacheMenu/mod/mod_proxy.html

 

 

首先在apache(Unix平台最流行的WEB服务器平台)上启用mod_proxy模块,需要注意的是,如果在apache(Unix平台最流行的WEB服务器平台)-2.2上,则还需要加载名为mod_proxy_http的模块。因为2.2系列把代理功能都拆分成N个小模块了。

#a2enmod proxy
#a2enmod proxy_http
#a2enmod proxy_balancer

 

 

 

apache(Unix平台最流行的WEB服务器平台)提供了mod_proxy模块用于提供代理服务,能够支持的包括正向代理、反向代理、透明代理、缓存、负载均衡,HTTP代理、FTP代理、SSL代理等若干强大的功能。

 

在您没有对服务器采取安全措施之前,请不要用ProxyRequests启用代理。

 

Apache可以被配置为正向(forward)反向(reverse) 代理。

正向代理 是一个位于客户端和原始服务器(origin server) 之间的服务器,为了从原始服务器取得内容,客户端向代理发送一个请求并指定目标(原始服务器),然后代理向原始服务器转交请求并将获得的内容返回给客户端。客户端必须要进行一些特别的设置才能使用正向代理。

正向代理的典型用途是为在防火墙内的局域网客户端提供访问Internet的途径。正向代理还可以使用缓冲特性(由mod_cache 提供)减少网络使用率。

使用ProxyRequests 指令即可激活正向代理 。因为正向代理允许客户端通过它访问任意网站并且隐藏客户端自身,因此你必须采取安全措施 以确保仅为经过授权的客户端提供服务。

反向代理 正 好相反,对于客户端而言它就像是原始服务器,并且客户端不需要进行任何特别的设置。客户端向反向代理的命名空间(name-space)中的内容发送普通 请求,接着反向代理将判断向何处(原始服务器)转交请求,并将获得的内容返回给客户端,就像这些内容原本就是它自己的一样。

反 向代理的典型用途是将防火墙后面的服务器提供给Internet用户访问。反向代理还可以为后端的多台服务器提供负载平衡,或为后端较慢的服务器提供缓冲 服务。 另外,还可以启用高级URL策略和管理技术,从而使处于不同web服务器系统的web页面同时存在于同一个URL空间下。

可以使用ProxyPass 指令激活反向代理(在RewriteRule 指令中使用[P] 标记也可以)。配置反向代理并不需要 打开ProxyRequests 指令。

 

 

------------------------反向代理

反向代理可以基于一整个站点,也可以基于一个目录。首先在全局配置文件下,加入如下几行,打开反向代理。 proxy.conf

ProxyRequests Off // 使用ProxyRequests 指令即可激活正向代理
<Proxy your_apache(Unix平台最流行的WEB服务器平台)_server_ip:80>
Order deny,allow
Allow from all
</Proxy>


然后新建一个网站,即创建一个标准的<virtualhost>配置段。这里我们将站点/test目录设置为google的反向代理。加入下边内容:

ProxyPass /images/ !
ProxyPass /js/ !
ProxyPass /css/ !

ProxyPass / http://192.168.1.101/
ProxyPass /test1 http://192.168.1.102/
ProxyPass /test http://www.google.com/
ProxyPassReverse /test http://www.google.com/

ProxyPass易理解,就是转发url上的请求. 其中的配置顺序也是需要遵守 。要禁止转发的url需要放在一般的请求之前。对于http://***/images/  http://***/js/ http://***/css/的请求是不予转发的,对于http://***/test1/的请求,会转发到  http://192.168.1.102/ 。ProxyPassReverse就是反向代理

 

然后保存配置文件重新启动apache

 

通过反向代理,我们可以将web服务器放置在防火墙后,在web服务器前端使用mod_proxy配置反向代理,并打开apache(Unix平台最流行的WEB服务器平台)的mod_cache缓存模块,更可以极大的提高对静态内容的访问性能。

 

--------------理解反向代理:
<IfModule mod_proxy.c>
        ProxyRequests Off
        <Proxy localhost:80>
                #AddDefaultCharset off
                Order deny,allow
                Deny from all
                #Allow from .example.com
        </Proxy>
        ProxyPass /it http://192.168.1.117/2222
</IfModule>
访问http://192.168.1.102/it/a==>直接跳转http://192.168.1.117/2222/a/



<IfModule mod_proxy.c>
        ProxyRequests Off
        <Proxy localhost:80>
               # AddDefaultCharset off
                Order deny,allow
                Deny from all
                #Allow from .example.com
        </Proxy>
        ProxyPass /it http://192.168.1.117/2222
        ProxyPassReverse /it http://192.168.1.117/2222
</IfModule>
访问http://192.168.1.102/it/a==>http://192.168.1.102/it/a/

 

------------------------负载均衡

apache自带mod_proxy功能模块中目前可以实现两种不同的负载均衡集群实现方式,第一种是分工合作的的形式,通过各台主机负责不同的任务而实现任务分工。第二种是不同的机器在担任同样的任务,某台机器出现故障主机可以自动检测到将不会影响到客户端 ,而第一种却不能实现,但第一种实现方式的优点在于他是主服务器负担相应没第二种大,因为他只是提供跳转指路功能,形象的说他不给你带路只是告诉你有条路可以到,但到了那是否可以看到你见的人他已经不会去管你了 :)。相比之下第二种性能要比第一种会好很多 ;但他们都有个共同点都是一托N形式 来完成任务的所以你的主机性能一定要好o

 

 

 

下面以在apachemod_proxy下做的反向代理负载均衡为配置实例:
首先要确定域名www.test.com 在DNS上的记录对应apache服务器接口上具有internet合法注册的IP地址,这样才能使internet上对www.test.com 的所有连接请求发送给本台apache服务器。
在本台服务器的apache配置文件httpd.conf中添加如下设置:
proxypass     /news      http://192.168.1.117
proxypass     /it      http://192.168.1.103
注意,此项设置最好添加在httpd.conf文件“Section 2”以后的位置,服务器192.168.1.1-3也应是具有相应功能的www服务器,在重启服务时,最好用apachectl configtest命令检查一下配置是否有误

接下来也是我真正想要介绍的2.2版本后在mod_proxy中新添加的mod_proxy_balancer模块给我们带来的新功能。

首先将在主配置文件http.conf以下Module的注释去掉
LoadModule proxy_module modules/mod_proxy.so
LoadModule proxy_balancer_module modules/mod_proxy_balancer.so
LoadModule proxy_http_module modules/mod_proxy_http.so

再并增加以下元素
ProxyRequests Off
ProxyPass /test  balancer://xuanfei stickysession=jsessionid nofailover=On
<proxy balancer://xuanfei/>
    BalancerMemberhttp://192.168.1.117 loadfactor=1
    BalancerMemberhttp://192.168.1.103  loadfactor=1
</proxy>
ProxyPass为代理转发的Url,即将所有访问/test的请求转发到群集balancer://xuanfei
loadfactor为各主机间的负载比例参数,可是设置不同指数
BalancerMember为群集的成员,即群集服务器A或B,负载均衡服务器会根据均衡规则来将请求转发给BalancerMember。

 

 

 

---------如何查看apache 集群的运行状态

先加载info模块:

#a2enmod info

 

<IfModule mod_status.c>

<Location /s-server-status>
    SetHandler server-status
    Order deny,allow
  #  Deny from all
    Allow from 192.168.1.117
# ip6-localhost
#    Allow from .example.com
</Location>

<Location /server-info>
SetHandler server-info
Order Deny,Allow
#Deny from all
Allow from 192.168.1.117
</Location>

<Location /balancer-manager>
SetHandler balancer-manager
Order Deny,Allow
#Deny from all
Allow from 192.168.1.117
</Location>

ExtendedStatus On
</IfModule>



配置完成后重启APACHE可以通过
http://ip/server-staus
http://ip/server-info                    需要加载info.so
http://ip/balancer-manager
这些URL查看apache 集群的运行状态

 

 

 

 

分享到:
评论

相关推荐

    apache代理mod_proxy、mod_proxy_http代理模块库包下载(32位windows\linux版本).txt

    该软件包是apache的httpd中mod_proxy.so、mod_proxy_http.so代理模块,分别对应包含linux、windows的版本。

    Apache 2.4 中文文档 - Apache 模块 mod_proxy_balancer | Docs4dev.mht

    Apache 2.4 中文文档 - Apache 模块 mod_proxy_balancer | Docs4dev.mht

    在Nginx服务器中配置mod_proxy反向代理的方法

    反向代理做法可以为网站安全做更高一步,像一些银行肯定是使用了反代理就是你进入代理服务器也得不到任何数据,下面我来介绍nginx用mod_proxy...1.启动apache的mod_proxy模块. 代码如下:LoadModule proxy_module m

    Apache HTTP Server Version 2.2 文档(2013.4.10最新)

    将模块从Apache1.3转化到Apache2.0 Apache 2.0 对请求的处理 Apache 2.0 线程安全问题 经常问到的问题 认证、授权、访问控制 CGI动态页面 .htaccess文件 如何.../指南 用户网站目录 服务器端包含入门 关于DNS和...

    Apache负载均衡设置方法 mod_proxy使用介绍

    本文主要讲解了Apache负载均衡功能的代码配置,首先我们通过几个模块的功能进行配置,之后就会发现其中的奥秘了,那么我们还是来具体看文章吧

    Apache 内容动态缓冲模块 mod_cache应用

    从Apache2.2起,mod_cache和mod_file_cache将不再是试验模块,它们已经足够稳定,可以用于实际生产中了。这些缓冲体系提供了一个强有力的途径来加速原始web服务器(origin webserver)和代理服务器(proxy)的HTTP处理...

    mod_rpaf, 反向代理为Apache添加转发模块.zip

    mod_rpaf, 反向代理为Apache添加转发模块 mod_rpaf---反向代理添加转发摘要将 REMOTE_ADDR,HTTPS 和 HTTP_PORT 设置为 upstream 代理提供的值。 将 R&gt; 注释 table 中的remoteip-proxy-ip-list

    mod_h2:Apache httpd的HTTP2模块

    在2.4.23中的Apache中添加了mod_proxy_h[ttp]2 。 github上的版本发布的频率比Apache计划提供的发布频率更高。 谢谢 多年来,以下美丽的人们通过承诺直接为该项目做出了贡献:朱利安·雷施克(Julian Reschke),卢...

    Apache2.2整合Tomcat6所用软件包

    1. 配置httpd.conf 使用apache自带的proxy模块,去掉注释使其可用 LoadModule proxy_module modules/mod_proxy.so LoadModule proxy_ajp_module modules/mod_proxy_ajp.so LoadModule proxy_balancer_module ...

    apache+tomcat 实现负载均衡

    在Apache中通过mod_proxy_ajp模块发送AJP数据,另外一端的服务器需要实现AJP协议,能够接受mod_proxy_ajp模块发送的AJP协议数据,在接受到AJP协议数据后做适当处理,并能够将处理结果以AJP协议方式发送回给mod_proxy_...

    Tomcat原理详解和各种集群的实现1

    1.Java基础知识讲解2.Tomcat的安装和实现3.通过apache的mod_proxy模块代理并实现Tomcat负载均衡4.基于Tomcat集群的网上商城

    CentOS下与Apache连接的PHP多版本共存方案实现详解

    apache下有多个fastCGI的支持方案:至少有mod_fcgi、mod_fastcgi(git)、mod_proxy_fcgi等。这两个模块都有点老,尤其mod_fastcgi自从2007年以来就没有更新,略掉不谈,事实上没用过用。mod_proxy_fcgi模块是httpd ...

    Oracle WebLogic Web Server Plug-Ins (mod_wl_24.so)

    WebLogic Web Server Plugins 12c now supports Apache 2.4.x Web Server and can proxy WebSocket applications deployed within WebLogic Server 12.1.2+ when configured with Apache 2.2.x and 2.4.x Web ...

    Apache实现Web Server负载均衡详解(不考虑Session版)

    首先,加载相应的代理模块,去掉以下模块前面的#号:LoadModule proxy_module modules/mod_proxy.soLoadModule proxy_ajp_module modules/mod_proxy_ajp.soLoadModule proxy_balancer_module modules/mod_proxy_...

    apache 采用C语言的模块开发

    我在改造APACHE服务器授权访问时,需要对不合法的客户端请求进行过滤。对不合法请求需要立即发送一个错误提示页面给客户端。 发送错误提示页面的程序片断如下: //非法请求作错误跳转 char *location...

    apache和IIS共享80端口解决办法

    首先我在Apache\conf目录下面找到httpd.conf文件,用记事本打开该文件找到以下几行代码: 代码如下:#LoadModule proxy_module modules/mod_proxy.so #LoadModule proxy_connect_module modules/mod_proxy_connect.so...

    GoCourseWeb:一个基于Vue.js 的前端项目

    LoadModule proxy_module modules/mod_proxy.so LoadModule proxy_html_module modules/mod_proxy_html.so LoadModule proxy_http_module modules/mod_proxy_http.so 在主机虚拟机的配置中,添加以下内容,使用...

    mod_layer7 for Apache 2.x-开源

    mod_layer7是Apache 2.2.x的应用程序切换和负载平衡模块。 该模块利用mod_proxy,mod_deflate和mod_cache并包含嵌入式Perl解释器,该解释器支持请求重写和其他有趣的功能。

    proxy-php:解决 CORS 限制的简单 HTTP 代理

    Apache mod_rewrite 模块 Apache mod_setenvif 模块 用法 将此文件夹复制到前端服务器的文档根目录,并最好将文件夹称为“代理”。 适配settings.conf.php文件,自定义以下变量 // The URL of the backend server...

Global site tag (gtag.js) - Google Analytics