当前位置: 首页 > Web前端 > HTML

apache中的ProxyPassReverse指令

时间:2023-03-29 11:24:29 HTML

该指令允许Apachehttpd调整HTTP重定向响应(HTTPredirectresponse)中的URLLocation、Content-Location和URI头。当Apachehttpd用作反向代理(或网关)以避免绕过反向代理时,这是必不可少的,因为后端服务器上的HTTP重定向位于反向代理之后。只有上面特别提到的HTTP响应头会被重写。Apachehttpd不会重写其他响应标头,默认情况下也不会重写HTML页面中的URL引用。这意味着如果代理内容包含绝对URL引用,它们将绕过代理。要重写HTML内容以匹配代理,您必须加载并启用mod_proxy_html。语法:ProxyPassReverse[path]url[interpolate]path是本地虚拟路径的名称;url是远程服务器的部分URL。这些参数的使用方式与ProxyPass指令相同。例如,假设本地服务器的地址是http://example.com/;然后就是下面的代理配置:ProxyPass"/mirror/foo/""http://backend.example.com/"ProxyPassReverse"/mirror/foo/""http://backend.example.com/"ProxyPassReverseCookieDomain"backend.example.com""public.example.com"ProxyPassReverseCookiePath"/""/mirror/foo/"上面的配置不仅会导致http:/本地请求/example.com/mirror/foo...在内部转换为对http://backend.example.com/bar的代理请求(此处由ProxyPass提供的功能)。它还负责将/backend.example.com/bar重定向到http://backend.example.com/quux时服务器backend.example.com发送的http://Redirect进行转换。Apachehttpd将HTTP重定向响应调整为http://example.com/mirror/foo...,然后再转发给客户端。请注意,用于构建URL的主机名是根据UseCanonicalName指令的设置选择的。Redirect指令通过要求客户端在新位置重新获取资源,将旧URL映射到新URL。旧版URL路径是以斜杠开头的区分大小写(%解码)的路径。不允许使用相对路径。新URL可以是以方案和主机名开头的绝对URL,也可以是以斜杠开头的URL路径。在后一种情况下,将添加当前服务器的方案和主机名。然后任何以URL-path开头的请求都会在目标URL的位置返回一个重定向请求给客户端。匹配的URL路径之外的其他路径信息将附加到目标URL。看一个例子:#重定向到不同主机上的URLRedirect"/service""http://foo2.example.com/service"#重定向到同一主机上的URLRedirect"/one""/two"如果客户端请求http://example.com/service/fo...会被告知访问http://foo2.example.com/servi...。这包括带GET参数的请求,比如http://example.com/service/fo...,这将被重定向到http://foo2.example.com/servi...q=23&a=42。请注意,POST将被丢弃。