从apache.org定义说:
这个指令让Apache httpd调整HTTPredirect响应上的Location,Content-Location和URI头中的URL。 当Apache httpd被用作反向代理(或网关)时,这是非常重要的,以避免绕过反向代理,因为后端服务器上的HTTPredirect会停留在反向代理之后。
只有上面特别提到的HTTP响应头才会被重写。 Apache httpd不会重写其他响应头文件,也不会重写HTML页面中的URL引用。 这意味着如果代理内容包含绝对URL引用,他们将绕过代理。 要重写HTML内容以匹配代理,您必须加载并启用mod_proxy_html。
path是本地虚拟path的名称; url是远程服务器的部分URL。 这些参数的使用方式与ProxyPass指令相同。
有人可以请解释我是如何工作的。 一般来说,这个指令是做什么的?
如果实际处理请求的服务器redirect到该服务器上的另一个URL,则ProxyPassReverse伪指令会根据反向代理服务器重写URL。 例如,如Apache 文档中所述 ,如果:
http://reverseproxy.com/mirror/foo/bar
被发送(反向代理)到
http://backend.example.com/bar
用于处理,但是在后端服务器确定正确的URL应该是quux ,即请求必须被redirect到
http://backend.example.com/quux
ProxyPassReverse指令将URL(在反向代理处)重写为
http://reverseproxy.com/mirror/foo/quux
在将HTTPredirect响应转发给客户端之前。 这样,客户端只知道反向代理服务器,但是仍然可以向http://reverseproxy.com/mirror/foo/quux的正确URL发送所需的请求,然后将其反向代理到后端服务器,并作为正常。 简而言之,它只是允许反向代理在HTTPredirect响应上返回正确的URI标头。