proxypass 是 apache 实现反向代理的核心指令,将 /old-app/ 请求透明转发至后端服务器,并需配套 proxypassreverse 修正响应头;斜杠匹配、cookie 域名与路径重写、静态资源排除及模块启用均为关键配置要点。

ProxyPass 是 Apache HTTP Server 中实现反向代理的核心指令,用于将客户端对某个路径的请求,透明地转发到后端另一台服务器(如新版系统),客户端无感知、URL 不变,适合新旧系统平滑迁移。
基础语法与关键参数
基本写法如下:
-
ProxyPass /old-app/ http://new-system:8080/:把访问/old-app/xxx的请求,转发到新版系统根路径下的/xxx -
ProxyPassReverse /old-app/ http://new-system:8080/:**必须配套使用**,重写响应头中的Location、Content-Location等 URL,确保重定向和跳转仍走原路径(否则新版系统返回的 302 会暴露真实地址) - 末尾斜杠影响路径拼接逻辑:两个地址都带或都不带斜杠最安全;若
ProxyPass /old/ http://back/,则/old/api→/api;若写成/old/ http://back(无尾斜杠),则变成/backapi—— 容易出错
处理新版系统返回的绝对路径与 Cookie 域名
新版系统可能返回含完整域名的重定向或设定了 Set-Cookie 的 Domain,需进一步修正:
安全更新和维护 CLI Proxy API(CPA)部署与配置。用于 CPA 镜像升级、配置变更、认证目录兼容修复、上线验证与回滚。适用于用户提到“CPA 更新/升级/配置改了/容器重建/回滚”等场景。
- 用
ProxyPassReverseCookieDomain old.example.com new.example.com替换响应中 Cookie 的域名 - 用
ProxyPassReverseCookiePath / /old-app/将新版系统设的Path=/改为Path=/old-app/,避免 Cookie 无法携带 - 若新版系统生成了含
http://new-system:8080/xxx的 HTML 或 JS 路径,Apache 本身不改内容体,需配合mod_substitute或在新版系统侧做相对路径适配
排除静态资源或特殊路径不代理
某些路径(如 /old-app/static/)可能仍由旧系统提供,或需绕过代理:
- 在
ProxyPass前添加排除规则:ProxyPass /old-app/static/ ! - 顺序很重要:Apache 按配置顺序匹配,排除规则必须放在对应
ProxyPass之前 - 也可用
<location></location>块精细控制,例如只对/old-app/api/启用代理,其余走本地
启用代理模块并注意安全限制
确保已启用必要模块:
-
a2enmod proxy proxy_http proxy_html(Debian/Ubuntu)或确认LoadModule已加载 - 默认 Apache 可能禁用正向代理,但反向代理(
ProxyPass)不受ProxyRequests Off影响;不过建议显式加上ProxyRequests Off防误开正向代理 - 生产环境建议加
Require all granted(Apache 2.4+)控制访问权限,避免未授权代理被滥用










