ProxyPass 本身不重写域名,需配合 ProxyPassReverse 等指令实现:修正响应头中的 Location 等字段、透传 Host 头、调整 Cookie 域名与路径,并在 HTTPS 场景下通过 X-Forwarded-Proto 协同后端生成正确协议地址。
apache 的 proxypass 本身不重写域名,它只做请求转发;所谓“域名重写映射”,实际是通过反向代理机制,让客户端访问新域名时,后端仍用旧地址处理请求,同时确保响应中所有暴露的地址(如重定向头、cookie 域名)都自动替换成新域名。核心靠 proxypassreverse 和配套指令协同完成。
关键:用 ProxyPassReverse 修正响应头中的域名
后端(如 Tomcat)返回 302 跳转或 Set-Cookie 时,常带内网或旧域名(如 http://old-app:8080/login 或 Domain=old-app.com)。Apache 不会自动改这些内容,必须显式配置:
-
ProxyPassReverse / http://old-app:8080/:把响应头中 Location、Content-Location、URI 里匹配http://old-app:8080/的部分,替换成当前请求的协议+新域名+路径前缀 - 若后端返回的是带协议的绝对地址(如
http://old-app.com/api),ProxyPassReverse第二个参数也得写成http://old-app.com/,否则无法匹配替换 - 确保
ProxyPass和ProxyPassReverse的路径前缀完全一致(都带尾部/)
必须透传原始 Host 头给后端
有些 Java 应用会根据收到的 Host 头生成跳转 URL。如果 Apache 不转发,后端可能误用默认值(如 localhost)构造地址,导致 ProxyPassReverse 无法覆盖。
安全更新和维护 CLI Proxy API(CPA)部署与配置。用于 CPA 镜像升级、配置变更、认证目录兼容修复、上线验证与回滚。适用于用户提到“CPA 更新/升级/配置改了/容器重建/回滚”等场景。
- 加上
ProxyPreserveHost On,让客户端的Host(如new-domain.com)原样传给后端 - 该指令需放在
ProxyPass之前,且作用域要覆盖整个虚拟主机
Cookie 域名和路径也要同步修正
后端设的 Cookie 域名(Domain=old-app.com)或路径(Path=/admin)若不调整,浏览器不会在新域名下发送该 Cookie。
- 用
ProxyPassReverseCookieDomain old-app.com new-domain.com替换 Cookie 域名 - 用
ProxyPassReverseCookiePath /admin /把后端设的路径映射到新路径下(例如后端设Path=/admin,但代理挂载在根路径) - 这两个指令参数必须与实际后端输出严格对应,否则无效
HTTPS 场景下注意协议一致性
用户访问 https://new-domain.com,但后端只走 HTTP,此时后端生成的重定向可能仍是 http://...,ProxyPassReverse 只做字符串替换,不会自动升 HTTPS。
- 推荐后端信任
X-Forwarded-Proto请求头,并据此生成跳转地址 - Apache 端加:
RequestHeader set X-Forwarded-Proto "https" - 避免硬写
ProxyPassReverse http://... https://...,容易漏匹配或出错

















