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.
相关推荐
了解并熟练掌握httpd.conf文件中的常用指令对于管理和优化Apache服务器至关重要。以下是一些主要的指令及其解释: 1. **ServerRoot**: 这个指令指定Apache服务器的根目录,即包含所有配置文件、模块和日志文件的...
Apache作为一款广泛使用的Web服务器软件,提供了强大的URL重写功能,通过`.htaccess`文件或Apache配置文件中的`RewriteRule`指令实现灵活的URL映射与重定向。 #### 二、基础概念 1. **RewriteEngine**:开启或关闭...
- **Apache的起源与特点**:Apache起源于NCSA HTTPd服务器,其主要特点是开放源码、跨平台和高度可定制。 - **工作原理**:Apache通过监听特定端口接收HTTP请求,并返回相应的网页内容。 2. **安装与配置Apache**...
以下是关于Apache Rewrite Rule的详细解释: 1. **RewriteEngine On/Off**:这是开启或关闭URL重写功能的开关。设置为`On`表示启用,`Off`则禁用。在每个你需要使用重写功能的虚拟主机或`.htaccess`文件中,都需要...
关于Apache_mod_rewrite的中文配置与RewriteRule规则详细介绍 在当今互联网时代,网站优化与安全性是网站管理员关注的焦点。Apache_mod_rewrite作为一个强大的工具,它不仅能够帮助网站优化URL结构,提升用户体验,...
- **Apache URL Rewrite**是一项强大的功能,能够帮助开发者和运维人员灵活地管理网站的URL结构。 - **重写规则**的设计需谨慎,避免出现循环重定向等问题。 - **性能考虑**:大量复杂的重写规则可能会影响服务器...
- **Apache 1.x**: 查找`LoadModuleRewrite_module libexec/mod_Rewrite.so` 和 `AddModule mod_Rewrite.c`。 - **Apache 2.x**: 查找`LoadModuleRewrite_module modules/mod_Rewrite.so`。 - **确认mod_rewrite...
本篇文章详细介绍了Apache之Rewrite和RewriteRule规则以及http强转https的配置总结,可作为平时运维手册.特此分享,希望能帮助到有用到的朋友!
通过以上步骤,我们可以有效地增强Apache服务器的安全性,保护服务器免受基于版本信息的攻击和潜在的Trace请求带来的威胁。这些措施是维护Web服务器安全的重要组成部分,应当被所有网站管理员所重视。
- **Apache版本**:2.4 **2. 安装Apache、PHP与MySQL** 确保已经安装了Apache、PHP和MySQL,并且配置了基本的运行环境。这些步骤不在本文档的讨论范围内,如果还未安装,可以参考“Linux PHP环境安装”指南。 **3...
**Apache与Tomcat整合** Apache和Tomcat的整合允许我们利用Apache的静态资源处理能力和Tomcat的动态内容处理能力。通常采用两种方式:代理反向代理(ProxyPass)和通过mod_jk模块。 1. **ProxyPass配置**: 使用...
- 通过`LimitRequestFields`、`LimitRequestFieldSize`和`LimitRequestLine`等指令控制并发连接数和单个请求的大小限制。 - 示例配置: ```apache LimitRequestFields 100 LimitRequestFieldSize 1024 ...
**Apache虚拟目录** 虚拟目录,也称为别名或符号链接,允许我们在一个Apache服务器上设置多个独立的网站或者目录,而这些目录并不实际位于服务器根目录下。这有助于组织和管理不同项目或用户的文件,同时减少主域名...
`Redirect`指令用于简单地将一个URL重定向到另一个URL,而`.htaccess`中的`RewriteEngine`和`RewriteRule`则可以进行更复杂的URL重写规则。 9. **错误处理** Apache通过`ErrorDocument`指令自定义错误页面,例如`...
1. **ServerRoot**: 这个指令定义了Apache服务器的基础目录,其中包含所有配置文件、日志文件和模块。例如,`ServerRoot "/etc/httpd"`将服务器根目录设置为`/etc/httpd`。 2. **Listen**: 此指令指定Apache服务器...
在Apache服务器配置中,`RewriteRule`指令是非常强大的工具之一,主要用于URL重写,实现URL的美化(如伪静态页面)等功能。本文将深入解析`RewriteRule`的工作原理及其常见用法,并通过具体示例进行说明。 #### 一...
Apache服务器是世界上最流行的Web服务器软件之一,被广泛用于托管各种网站和应用程序。它以其开源、稳定、高效和可扩展性而著称。本教程将详细讲解如何在Windows和Linux操作系统上安装Apache服务器,并解决Vue项目在...
淘宝帝国 淘宝客 6.3最新版本# Helicon ISAPI_Rewrite configuration file # Version 3.1.0.56 ... RewriteEngine On ... ... RewriteRule ^(.*)taoshop/(.+)$ $1... RewriteRule ^(.*)59b2c-([0-9]+)/(.+)$ $1img/nopic.gif
1. **Apache基本结构与配置文件**: Apache的配置主要通过修改`httpd.conf`或`apache2.conf`等主配置文件完成。这个文件通常位于Apache安装目录的`conf`子目录下。配置文件由一系列指令组成,如`ServerRoot`定义...
Apache 的 Rewrite 模块提供了强大的 URL 重写功能,通过在配置文件中添加规则,能够实现复杂的 URL 转换和跳转。本文将详细介绍 Apache 开启伪静态的配置和应用。 一、加载 Rewrite 模块 要使用 Rewrite 模块,...