原文地址:http://httpd.apache.org/docs/2.2/mod/mod_proxy.html#proxypass
翻译:ShiningRay
描述:将远程服务器映射到本地服务器的URL空间
语法:ProxyPass [路径] !|url [键=值 键=值 ...]] [nocanon]
上下文: server config, virtual host, directory
状态:扩展
模块:mod_proxy
该指令可以将远程服务器映射到本地服务器的URL空间;本地的服务器并不是扮演传统意义上的代理服务器的角色,而是表现为远程服务器的一个镜像。此本地服务器常被成为反向代理(reversed proxy)或者是网关(gateway)。路径是指本地虚拟路径的名字;url指远程服务器的一个部分URL,不能包含查询字符串。
注意:在使用ProxyPass指令的时候,ProxyRequests指令通常都应该是关闭的。
假设本地服务器的地址是 http://example.com/ ,那么
ProxyPass /mirror/foo/ http://backend.example.com/将会把对http://example.com/mirror/foo/bar的本地请求内部转换成到http://backend.example.com/bar的代理请求。
其中,!指令当你不想对某个子目录进行反向代理的时候就有用了,例如:
ProxyPass /mirror/foo/i !
ProxyPass /mirror/foo http://backend.example.com将会把所有的/mirror/foo请求重定向到backend.example.com除了对/mirror/foo/i的请求。
注意:
顺序很重要:排除的指令必须在一般的ProxyPass指令之前。
和Apache 2.1一样,具备了使用到后端服务器的线程池的能力。使用“键=值”的参数便可调节线程池的分配。硬性最大值(Hard Maximum)的默认值为当前MPM中每个进程的线程数量。在Prefork MPM中,该值总是为1,在Worker MPM中,该值受ThreadsPerChild控制。
设置min可以决定有多少到后端服务器的链接始终打开。根据需要最多创建数量为柔性最大值(Soft Maximum),也就是smax的链接。任何超出smax数量的链接都会指定一个生存时间也就是ttl。Apache不会同时创建超过硬性最大值(或max)数量的到后端服务器的链接。
ProxyPass /example http://backend.example.com smax=5 max=20 ttl=120 retry=300
参数
默认值
描述
min |
0 |
到后端服务器的总是打开的链接最小数。 |
max |
1…n |
允许连接到后端服务器的硬性最大链接数。硬性最大值 的默认值为当前MPM中每个进程的线程数量。在Prefork MPM中,该值总是为1,在Worker MPM中,该值受ThreadsPerChild 控制。 |
smax |
max |
根据需要最多创建数量为柔性最大值(Soft Maximum),也就是smax 的链接。任何超出smax 数量的链接都会指定一个生存时间也就是ttl 。 |
acquire |
- |
如果设置了该参数,它就会成为等待链接池中空闲链接的最大时间。如果链接池中没有任何空闲链接,那么Apache将会给客户端返回SERVER_BUSY 状态。 |
flushpackets |
off |
决定代理模块是否要在接受到每段数据的时候自动冲掉输出缓冲。‘off’表示只有当需要的时候才冲掉,‘on’表示每段数据后都冲,‘auto’表示轮询/等待一段长度为‘flushwait ’毫秒的时间后如果没有输入便冲掉。目前该参数仅对AJP有效。 |
flushwait |
10 |
表示如果‘flushpackets’为‘auto’,在冲掉输出组前等待额外输入的时间,单位毫秒。 |
keepalive |
Off |
该参数应该在你的Apache和后端服务器之间有防火墙的时候时候,因为防火墙有可能会丢弃不活动的链接。该标志将会告诉操作系统在不活动的链接中发送KEEP_ALIVE 消息(时间间隔由全局的OS设置决定,一般为120ms),这样避免防火墙丢弃该链接。要启用keepalive可以将该属性设置为On 。 |
lbset |
0 |
对该工作单元所属的负载均衡集群进行设置。负载均衡器会先尝试较小的lbset,然后尝试大的。 |
ping |
0 |
Ping数据告诉Web服务器在对ajp13链接递交请求前发送一个CPING请求。参数为等待CPONG响应的延迟,单位为秒。添加该功能是为了避免挂起和忙碌的Tomcat的一些问题。该功能需要ajp13 的ping/pong支持,已经在Tomcat 3.3.2+、4.1.28+、5.0.13+中实现。它会增加普通操作中的网络流量,有可能是个问题,但是它在集群节点失效或者繁忙的时候减少网络流量。目前该参数只对AJP有效。 |
loadfactor |
1 |
工作单元负载系数。用于BalancerMember。它是一个1到100之间的数字,用于定义应用于该工作单元的正规化权重负载。 |
redirect |
- |
工作单元的重定向路由(Redirection Route)。该值通常被动态设置用于从集群中安全地移除某个节点。如果被设置了,所有不包含会话ID的请求都会被重定向到有等值route参数的BalancerMember中。 |
retry |
60 |
线程池工作单元重试的超时时间,以秒为单位。如果到后端服务器的线程池工作单元状态是出错,Apache将不会递交任何请求到该服务器,直到超时结束。这可以令后端服务器关闭进行维护,并稍后上线。如果值为0则表示总是重试错误状态的工作单元不等待任何时间。 |
route |
- |
工作单元的路由,用于负载均衡器中。该路由是附加给会话ID的一个值。 |
status |
- |
用一个字符定义该工作单元的初始状态:‘D’表示禁用,‘S’表示已停止,‘I’表示忽略错误,‘H’表示热备,‘E’表示出错。状态可以通过前置‘+’表示设置或者‘-’表示清楚。这样,‘S-E’表示设置该工作单元为已停止并清除出错标志。 |
timeout |
Timeout |
链接超时时间,单位为秒。如果未设置,那么Apache会一直等到有可用的链接位置。该指令常和max参数一起使用来限制到后端服务器的链接。 |
ttl |
- |
超出smax连接数的非活动链接的生存时间(Time To Live),单位为秒。Apache会关闭在这段时间内没有被用过的所有链接。 |
如果代理的指令类型以balancer://
开头那么会创建一个虚拟工作单元,并不直接和后端服务器通讯。它负责对一些“真正”的工作单元进行管理。这种情况下可以给虚拟工作单元添加一系列额外参数。更多关于均衡器如何工作的信息请查看mod_proxy_balancer
。
参数
默认值
描述
lbmethod |
byrequests |
选择均衡器的负载均衡方式。可以是byrequests ,进行加权请求计数,或者是bytraffic ,进行加权流量字节计数均衡。默认按请求数。 |
maxattempts |
1 |
在放弃之前的故障转移的最大尝试次数。 |
nofailover |
Off |
如果设为‘On ’,当工作单元被禁用或者出错时,会话则立即中断。可以将该值设为On 如果后端服务器不支持会话复制(Session replication)。 |
stickysession |
- |
均衡器粘连会话名称。该值常常会被设置为类似JSESSIONID 或者PHPSESSIONID 之类的值,他依赖于支持会话的后端应用服务器。如果后端服务器使用不同的cookie名称或者URL编码的ID(像servlet容器),使用|来分开他们。第一个部分针对cookie,第二个针对路径。 |
timeout |
0 |
均衡器超时时间,单位为秒。如果设置了,那么就是等待空闲工作单元的最大时间。默认是不等。 |
均衡器设置范例
ProxyPass /special-area http://special.example.com/ smax=5 max=10
ProxyPass / balancer://mycluster stickysession=JSESSIONID|jsessionid nofailover=On
<Proxy balancer://mycluster>
BalancerMember http://1.2.3.4:8009
BalancerMember http://1.2.3.5:8009 smax=10
# 性能较弱的服务器,不要给他发送太多请求
BalancerMember http://1.2.3.6:8009 smax=1 loadfactor=20
</Proxy>
设置一个热备份,也就是只有当没有其他成员可用的时候才使用:
ProxyPass / balancer://hotcluster/
<Proxy balancer://hotcluster>
BalancerMember http://1.2.3.4:8009 loadfactor=1
BalancerMember http://1.2.3.5:8009 loadfactor=2
# 以下是热备份
BalancerMember http://1.2.3.6:8009 status=+H
ProxySet lbmethod=bytraffic </Proxy>
正常情况下,mod_proxy会标准化被ProxyPass的URL。但它可能会和某些后端不兼容,尤其是那些利用了PATH_INFO的。可选的nocanon关键词可以禁止它,并不动地直接将URL路径传递给后端。注意它可能会影响到后端的安全性,因为它跳过了由代理提供的对常见的基于URL的攻击的保护。
当用在<Location>
节中的时候,第一个参数应被忽略,并且本地的路径将从<Location>
取得。
如果你需要更加有弹性的反向代理配置,参见是用[P]
标志的RewriteRule
指令。
分享到:
相关推荐
Apache在使用反向代理模式配置负载均衡时需要注意ProxyPass指令的顺序,代码片段如下,红色的代码部分不能放到蓝色的代码上方,不然通过apache访问时会出现请求转发失败的问题。
对apache与tomcat的集群配置进行了详细的描述。 基础篇:系统部署、集群配置、集群方式; 晋级篇:正向与反向代理、访问控制、均衡策略之ProxyPass、均衡策略之ProxyPassReverse、代理struts2工程、PROXY_HTTP与...
Apache 配置 1. 配置httpd.conf 使用apache自带的proxy模块,去掉注释使其可用 LoadModule proxy_module modules/mod_proxy.so LoadModule proxy_ajp_module modules/mod_proxy_ajp.so LoadModule proxy_balancer...
peoxy balancer 配置 ProxyPass /11serv balancer://saleserv-cluster/ nofailover=On
apache工具 脚本Apache #balancer-manager.py 允许您管理在apache2 mod_proxy conf中定义的Worker / BalancerMember: BalancerMember ajp://10.152.45.1:8001 route=... ProxyPass /balancer-manager ! < L
一、apache服务器配置。 我们下载安装的是httpd-2.2.17-win32-x86-no_ssl.msi,安装完成后,我们需要配置一下,由于jwchat是用javacript去和openfire进行通讯的,所以他们之间的通讯是基于http的,但是由于浏览器...
ProxyPass / balancer://cluster/ stickysession=jsessionid nofailover=On ProxyPassReverse / balancer://cluster/ 其中的域名和路径根据你自己情况设置 然后再设置TOMCAT虚拟主机 2 配置 tomcat 2.1. 配置 ...
NameVirtualHost *:80 这个一定要 然后把主的ServerAdmin丢最下面 ///////////////////// NameVirtualHost *:80 <VirtualHost> ServerName abccccc.com ProxyPass / http://localhost:8088/ ProxyPassReverse...
3、Apache启动报错:Invalid command 'ProxyPass', perhaps misspelled or defined by a module not inclu ded in t 今天在服务器上刚装完Apache,需要发布一个新的系统,但是启动Apache的时候报错: Invalid ...
ProxyPass /ysz/ http://localhost:8080/ 然而,如果要配置一个相对复杂的反向代理 Nginx相对Apache2就要麻烦一些了 比如,将url中以/wap/开头的请求转发到后台对应的某台server上 可以再Nginx里设置一个变量,来临...
实现方式:利用apache的 ProxyPass 可以实现对虚拟服务器的配置.(httpd.conf中) 如某公司的WWW服务器为 在httpd.conf中作如下设置: ProxyPass /sales ProxyPass /rd ProxyPass /head 如上设置生效了...
ib-简单图表您的盈透证券帐户的简单图表。 在此处查看演示:(很抱歉,它已关闭)为什么? 我想要一种非常简单的方法... 如果您使用的是Apache,则设置ProxyPass URL可能会更容易,但是我没有使用Apache,因此该方法已
如果使用Apache和mod-proxy,则应将以下行添加到proxy.conf中: ProxyPass / tilt / 重试= 0 TILT以独立形式运行在TCP端口8082上,因此应该没有其他在该端口上侦听的应用程序。 作为Tomcat中的Web应用程序,它可以...
purls.py默认情况下在端口8880上运行,因此,如果主要运行Apache,则Apache配置文件中的以下两行配置足以将前缀/ u /重定向到purls.py。 ProxyPass /u/ http://localhost:8880/ ProxyPassReverse /u/ ...
Symfony 2 安全性和 Websockets 演示分支: 默认值:无安全性 ...示例 Apache VHost 配置: ServerName websocket.symfony2.local DocumentRoot ~/Sites/sf2-security-websocket/web ProxyPass http://
我们可以在客户端文件夹中找到客户端,为了客户端的正常运行,我们需要在我们设置 VirtualHost 的计算机上安装一个 apache 服务器 # ADD PORT 84 Listen 84 DocumentRoot "{cesta ku projektu}/client/" ...
设置:示例 apache 虚拟主机配置: <VirtualHost> Servername green.xenonapps.dev DocumentRoot /green-serv/ ErrorLog /green-serv/error.log CustomLog /green-serv/access.log combined ProxyPass / ...
Logging Proxy 是一个简单的代理 Servlet,它将其请求转发到一个或多个在 servlet 的 init 参数中配置的服务器,并可选择将请求、... 后两个用例也可以通过在 Apache 和 nginx 等 Web 服务器中设置 ProxyPass 来完成。