关于apache:apache-里的-ProxyPassReverse-指令

4次阅读

共计 1514 个字符,预计需要花费 4 分钟才能阅读完成。

该指令容许 Apache httpd 调整 HTTP 重定向响应(HTTP redirect response) Location、Content-Location 和 URI 标头中的 URL。当 Apache httpd 用作反向代理(或网关)以防止绕过反向代理时,这是必不可少的,因为后端服务器上的 HTTP 重定向位于反向代理之后。

只有下面特地提到的 HTTP 响应头会被重写。Apache httpd 不会重写其余响应标头,默认状况下也不会重写 HTML 页面内的 URL 援用。这意味着如果代理内容蕴含相对 URL 援用,它们将绕过代理。要重写 HTML 内容以匹配代理,您必须加载并启用 mod_proxy_html.

语法:

ProxyPassReverse [path] url [interpolate]

path 是本地虚构门路的名称;url 是近程服务器的局部 URL。这些参数的应用形式与 ProxyPass 指令雷同。

例如,假如本地服务器的地址为 http://example.com/;而后有上面的 proxy 配置:

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 在这里提供的性能). 它还负责在将 http://backend.example.com/bar 重定向到 http://backend.example.com/quux 时服务器 backend.example.com 发送的重定向。Apache httpd 在将 HTTP 重定向响应转发给客户端之前将其调整为 http://example.com/mirror/foo…。请留神,用于构建 URL 的主机名是依据 UseCanonicalName 指令的设置抉择的。

Redirect 指令通过要求客户端在新地位从新获取资源,将旧 URL 映射到新 URL。

旧的 URL 门路是以 斜杠结尾的辨别大小写 (%- 解码)的门路。 不容许应用相对路径

新 URL 能够是以计划和主机名结尾的相对 URL,也能够是以斜杠结尾的 URL 门路。在后一种状况下,将增加以后服务器的计划和主机名。

而后任何以 URL-path 结尾的申请都会在指标 URL 的地位返回一个重定向申请给客户端。匹配的 URL 门路之外的其余门路信息将附加到指标 URL。

看个例子:

# Redirect to a URL on a different host
Redirect "/service" "http://foo2.example.com/service"

# Redirect to a URL on the same host
Redirect "/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 将被抛弃。

正文完
 0