ProxyPassReverse 仅修正 Location、Content-Location 和 URI 响应头中的 URL,要求路径与协议严格匹配;多后端需分别配置;还需配合 ProxyPassReverseCookieDomain 和 ProxyPassReverseCookiePath 修正 Cookie。

ProxyPassReverse 的作用很明确:修正后端返回的重定向响应头,让浏览器跳转时仍走代理路径,不暴露内网地址。它不是万能重写工具,只处理特定响应头,且依赖严格匹配。
它专门修正哪几个响应头
仅改 Location、Content-Location 和 URI 这三个 HTTP 响应头里的 URL。比如后端返回:
- Location: http://127.0.0.1:8080/login → 被替换成客户端实际访问的地址,如 https://example.com/app/login
- Content-Location: /api/user(相对路径)→ 不处理,因为不含协议和主机名
- HTML 页面里写的
<a href="http://127.0.0.1:8080/assets/style.css"></a>→ 完全不碰,需额外启用 mod_proxy_html
必须和 ProxyPass 成对、路径与协议完全一致
配置错一个字符就可能失效:
- ProxyPass /app/ http://127.0.0.1:8080/ → ProxyPassReverse 也必须是 /app/ http://127.0.0.1:8080/,不能写成 /app 或 /app/(少斜杠)
- 后端返回 https://127.0.0.1:8080/xxx,但 ProxyPassReverse 写的是 http://127.0.0.1:8080/ → 协议不匹配,不替换
- 后端带端口如 http://127.0.0.1:8080:8080/(误配),ProxyPassReverse 没写端口 → 匹配失败
多后端场景要分别配置
不同服务用不同路径代理,就得各自配一套:
安装并运行 Aperture(Lightning Labs 的 L402 闪电反向代理),用于创建 L402 付费墙、配置付费 API 端点、为其他代理托管付费内容或测试 L402 认证流程。
- ProxyPass /api/ http://api-svc:3000/
- ProxyPassReverse /api/ http://api-svc:3000/
- ProxyPass /auth/ http://auth-svc:4000/
- ProxyPassReverse /auth/ http://auth-svc:4000/
不能用一条 ProxyPassReverse 覆盖多个后端地址。
Cookie 路径和域名也需要同步调整
后端设的 Set-Cookie 可能含 Domain=127.0.0.1 或 Path=/admin,导致浏览器不携带或发错:
- ProxyPassReverseCookieDomain 127.0.0.1 example.com → 把 Cookie 的 Domain 从内网改成公网域名
- ProxyPassReverseCookiePath / /app/ → 把后端设的根路径 Cookie Path 映射到代理子路径下
这两项不是默认开启的,得手动加上,否则登录态可能丢失或无法传递。

















