网站首页 > 基础教程 正文
该指令可以将远程服务器映射到本地服务器的URL空间;本地的服务器并不是扮演传统意义上的代理服务器的角色,而是表现为远程服务器的一个镜像。此本地服务器常被成为反向代理(reversed proxy)或者是网关(gateway)。路径是指本地虚拟路径的名字;url指远程服务器的一个部分URL,不能包含查询字符串。
描述:将远程服务器映射到本地服务器的URL空间
语法:ProxyPass [路径] !|url [键=值 键=值 ...]] [nocanon]
上下文: server config, virtual host, directory
状态:扩展
模块:mod_proxy
配置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/
猜你喜欢
- 2024-10-19 程序员学习过程的几个困惑? 程序员的困难
- 2024-10-19 学法减分,分享几个简单试用的学习和搜题工具
- 2024-10-19 简单的Shell脚本实战演练,测试菜鸟也可以轻松学会
- 2024-10-19 学法减分快速搜题,分享几个简单试用的学习和搜题工具
- 2024-10-19 Python爬虫要如何学习,才能快速入门
- 2024-10-19 去面试Python工程师,这几个基础问题一定要能回答
- 2024-10-19 学法减分拍照搜题快速通过,分享几个简单试用的学习和搜题工具
- 2024-10-19 数据太乱,整理太头疼?试试这个网站,AI 帮你轻松搞定!
- 2024-10-19 Python爬虫系列——Day004 python爬虫大全
- 2024-10-19 Python正则表达式的7个使用典范! 正则表达 python
- 最近发表
- 标签列表
-
- 菜鸟教程 (58)
- jsp (69)
- c++教程 (58)
- pythonlist (60)
- gitpush (78)
- gitreset (66)
- pythonif (68)
- pythonifelse (59)
- deletesql (62)
- c++模板 (62)
- c#event (59)
- linuxgzip (68)
- 字符串连接 (73)
- nginx配置文件详解 (61)
- html标签 (69)
- c++初始化列表 (64)
- exec命令 (59)
- canvasfilltext (58)
- mysqlinnodbmyisam区别 (63)
- arraylistadd (66)
- node教程 (59)
- console.table (62)
- mysqldatesub函数 (63)
- window10java环境变量设置 (66)
- c++虚函数和纯虚函数的区别 (66)