首页 » PHP教程 » apachephp反向署理技巧_Apache的ProxyPass简单运用

apachephp反向署理技巧_Apache的ProxyPass简单运用

访客 2024-12-17 0

扫一扫用手机浏览

文章目录 [+]

描述:将远程做事器映射到本地做事器的URL空间语法:ProxyPass [路径] !|url [键=值 键=值 ...]] [nocanon]高下文: server config, virtual host, directory状态:扩展模块:mod_proxy

apachephp反向署理技巧_Apache的ProxyPass简单运用

apachephp反向署理技巧_Apache的ProxyPass简单运用
(图片来自网络侵删)

配置httpd.conf

#担保以下模块加载  

LoadModule proxy_module modules/mod_proxy.so  

LoadModule proxy_http_module modules/mod_proxy_http.so  

#配置ProxyPass  

ProxyPass /new/ http://mysite.com/  

ProxyPass /new2/ http://192.168.0.169:8080/  

把稳:顺序很主要:打消的指令必须在一样平常的ProxyPass指令之前。

上面的配置已经可以实现大部分功能了,要掌握细节,可以参考官方文档:

http://httpd.apache.org/docs/2.0/mod/mod_proxy.html

http://www.cnblogs.com/milton/p/4215125.html

apache中的mod_proxy模块用于url的转发,即具有代理的功能。
运用此功能,可以很方便的实现同tomcat等运用做事器的整合,乃至可以很方便的实现web集群的功能。

例如利用apache作为域名www.test.com代理做事器,让其暴露在公网上,即DNS解析到本机器上,真正供应web做事器的是另一台位于同一内网的机器上,假设IP是192.168.100.22,那么只须要如下配置就可以了。

ProxyPass / http://192.168.100.22/

ProxyPassReverse / http://192.168.100.22/

ProxyPass 很好理解,便是把所有来自客户端对http://www.test.com的要求转发给http://192.168.100.22上进行处 理, ProxyPassReverse 的配置总是和ProxyPass 同等,

它的浸染在于反向代理,如果相应中有302重定向,ProxyPassReverse就派上用场。

举例解释,假设用户访问http://www.test.com/exam.php,通过转发交给http://192.168.100.22 /exam.php处理,假定exam.php处理的结果是实现redirect到login.php(利用相对路径,即省略了域名信息),如果没有配置 反向代理,客户端收到的要求相应是重定向操作,并且重定向目的url为http://192.168.100.22/login.php ,而这个地址只是代理做事器能访问到的,可想而知,客户端肯定是打不开的,反之如果配置了反向代理,则会在转交HTTP重定向应答到客户端之前调度它为 http://www.test.com/login.php,即是在原要求之后追加上了redirect的路径。
当客户端再次要求http: //www.test.com/login.php,代理做事器再次事情把其转发到http://192.168.100.22/login.php。
客户端到做事器称之为正向代理,那做事器到客户端就叫反向代理 httpd.conf 的修正例子, 可以放到VirtualHost节点配置里面

 

=============================================================================================================

查看原文:http://www.ibloger.net/article/296.html

apache中的mod_proxy模块紧张浸染便是进行url的转发,即具有代理的功能。
运用此功能,可以很方便的实现同tomcat等运用做事器的整合,甚者可以很方便的实现web集群的功能。

例如利用apache作为域名www.test.com代理做事器,让其暴露在公网上,即DNS解析到本机器上,真正供应web做事器的是另一台位于同一内网的机器上,假设起IP是192.168.100.22,那么只须要如下配置就可以了。

ProxyPass / http://192.168.100.22/ProxyPassReverse / http://192.168.100.22/

ProxyPass 很好理解,便是把所有来自客户端对http://www.test.com的要求转发给http://192.168.100.22上进行处理

ProxyPassReverse 的配置总是和ProxyPass 同等,但用场很让人费解。
彷佛去掉它很能很好的事情,事实真的是这样么,实在不然,如果相应中有302重定向,ProxyPassReverse就派上用场。
举例解释,假设用户访问http://www.test.com/exam.php,通过转发交给http://192.168.100.22 /exam.PHP处理,假定exam.php处理的结果是实现redirect到login.php(利用相对路径,即省略了域名信息),如果没有配置反向代理,客户端收到的要求相应是重定向操作,并且重定向目的url为http://192.168.100.22/login.php ,而这个地址只是代理做事器能访问到的,可想而知,客户端肯定是打不开的,反之如果配置了反向代理,则会在转交HTTP重定向应答到客户端之前调度它为 http://www.test.com/login.php,即是在原要求之后追加上了redirect的路径。
当客户端再次要求http: //www.test.com/login.php,代理做事器再次事情把其转发到http://192.168.100.22/login.php。

客户端到做事器称之为正向代理,那做事器到客户端就叫反向代理。

ProxyPass与ProxyPassReverse及ProxyPassMatch这几个都是APACHE的代理指令1、ProxyPass:

语法:ProxyPass [path] !|url

它紧张是用作URL前缀匹配,不能有正则表达式,它里面配置的Path实际上是一个虚拟的路径,在反向代理到后真个url后,path是不会带过去的,利用示例:

1)、ProxyPass / images/ !

#担保以下模块加载  

2)、ProxyPass /mirror/foo/ http://backend.example.com/

LoadModule proxy_module modules/mod_proxy.so  

注:配置的时候,不须要被转发的要求,要配置在须要被转发的要求前面。

2、ProxyPassMatch

语法:ProxyPassMatch [regex] !|url

这个实际上是url正则匹配,而不是大略的前缀匹配,匹配上的regex部分是会带到后真个url的,这个是与ProxyPass不同的。
利用示例:

1、ProxyPassMatch ^/images !

LoadModule proxy_http_module modules/mod_proxy_http.so  

2、ProxyPassMatch ^(/..gif)1

#配置ProxyPass  3、ProxyPassReverse

语法:ProxyPassReverse [路径] url

它一样平常和ProxyPass指令合营利用,此指令使Apache调度HTTP重定向应答中Location, Content-Location, URI头里的URL,这样可以避免在Apache作为反向代理利用时。

后端做事器的HTTP重定向造成的绕过反向代理的问题。
参看下面的示例

ProxyPass /example http://www.example.com/ProxyPassReverse /example http://www.example.com/

标签:

相关文章