设为首页 收藏本站
查看: 833|回复: 0

[经验分享] 关于Apache RewriteRule和ProxyPass*指令的差别

[复制链接]

尚未签到

发表于 2017-1-11 07:06:15 | 显示全部楼层 |阅读模式
Apache RewriteRule [P]和ProxyPass(ProxyPassMatch)指令的差别:
虽然都可以用来做代理转发,但是两者还是有不少细微的差别:
1.RewriteRule可以对URL重写可以实现更加灵活的处理;
2.ProxyPass*对重写能有更高的性能。在apache官方文档2.2版本中没有给出RewriteRule [P]详细说明,而2.4版本文档有更加具体的使用说明。主要是没法提供连接池从而实现多个Http请求复用TCP链接达到性能上的提升。具体可以用tcpdump或wireshark进行验证。
还需要注意一点是:如果使用
  SetEnv force-proxy-request-1.0 1
  SetEnv proxy-nokeepalive 1 
  这两个指令也会导致没法使用keepalive connection。
系统环境:Redhat + Apache2.2.15 + Php
原因:
     论坛服务器上发现大量TIME_WAIT状态的tcp链接(600-900),上服务器上netstat发现都是跟frontend服务器之间的链接。大量这种状态的链接还是消耗不少资源(主要是端口和内存),因此想办法降低。
      frontend服务器大量使用RewriteRule对进行做代理转发,怀疑这个代理转发的动作没有复用tcp链接。通过tcpdump证实了这种想法,每个请求进来都是有tcp链接建立和断开的过程。httpd.apache.org中2.2版本文档仔细看了下RewriteRule P指令的说明好像没有讲到具体的信息。后来又跑到2.4版本中去看了下发现如下说明。调整frontend指令以后TIME_WAIT维持在100左右,而且大部分都是到Mysql的链接了。
 
   


P|proxy


Use of the [P] flag causes the request to be handled by mod_proxy, and handled via a proxy request. For example, if you wanted all image requests to be handled by a back-end image server, you might do something like the following:

RewriteRule /(.*)\.(jpg|gif|png)$ http://images.example.com/$1.$2 [P]
Use of the [P] flag implies [L] - that is, the request is immediately pushed through the proxy, and any following rules will not be considered.
You must make sure that the substitution string is a valid URI (typically starting with http://hostname) which can be handled by the mod_proxy. If not, you will get an error from the proxy module. Use this flag to achieve a more powerful implementation of the ProxyPass directive, to map remote content into the namespace of the local server.

Security Warning

Take care when constructing the target URL of the rule, considering the security impact from allowing the client influence over the set of URLs to which your server will act as a proxy. Ensure that the scheme and hostname part of the URL is either fixed, or does not allow the client undue influence.



Performance warning

Using this flag triggers the use of mod_proxy, without handling of persistent connections. This means the performance of your proxy will be better if you set it up withProxyPass or ProxyPassMatch
This is because this flag triggers the use of the default worker, which does not handle connection pooling.
Avoid using this flag and prefer those directives, whenever you can.



Note: mod_proxy must be enabled in order to use this flag.

运维网声明 1、欢迎大家加入本站运维交流群:群②:261659950 群⑤:202807635 群⑦870801961 群⑧679858003
2、本站所有主题由该帖子作者发表,该帖子作者与运维网享有帖子相关版权
3、所有作品的著作权均归原作者享有,请您和我们一样尊重他人的著作权等合法权益。如果您对作品感到满意,请购买正版
4、禁止制作、复制、发布和传播具有反动、淫秽、色情、暴力、凶杀等内容的信息,一经发现立即删除。若您因此触犯法律,一切后果自负,我们对此不承担任何责任
5、所有资源均系网友上传或者通过网络收集,我们仅提供一个展示、介绍、观摩学习的平台,我们不对其内容的准确性、可靠性、正当性、安全性、合法性等负责,亦不承担任何法律责任
6、所有作品仅供您个人学习、研究或欣赏,不得用于商业或者其他用途,否则,一切后果均由您自己承担,我们对此不承担任何法律责任
7、如涉及侵犯版权等问题,请您及时通知我们,我们将立即采取措施予以解决
8、联系人Email:admin@iyunv.com 网址:www.yunweiku.com

所有资源均系网友上传或者通过网络收集,我们仅提供一个展示、介绍、观摩学习的平台,我们不对其承担任何法律责任,如涉及侵犯版权等问题,请您及时通知我们,我们将立即处理,联系人Email:kefu@iyunv.com,QQ:1061981298 本贴地址:https://www.yunweiku.com/thread-326646-1-1.html 上篇帖子: Apache Struts2 XWork绕过安全限制执行任意命令漏洞 下篇帖子: Apache POI (JAVA处理Office文档的类库)
您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

扫码加入运维网微信交流群X

扫码加入运维网微信交流群

扫描二维码加入运维网微信交流群,最新一手资源尽在官方微信交流群!快快加入我们吧...

扫描微信二维码查看详情

客服E-mail:kefu@iyunv.com 客服QQ:1061981298


QQ群⑦:运维网交流群⑦ QQ群⑧:运维网交流群⑧ k8s群:运维网kubernetes交流群


提醒:禁止发布任何违反国家法律、法规的言论与图片等内容;本站内容均来自个人观点与网络等信息,非本站认同之观点.


本站大部分资源是网友从网上搜集分享而来,其版权均归原作者及其网站所有,我们尊重他人的合法权益,如有内容侵犯您的合法权益,请及时与我们联系进行核实删除!



合作伙伴: 青云cloud

快速回复 返回顶部 返回列表