ProxyPass 本身不重写路径,仅转发请求;路径重写需结合匹配规则、后端适配及 ProxyPassReverse 或 RewriteRule。场景一:/admin/→后端根路径,依赖前后缀斜杠对齐自动剥离;场景二:/api/→/v2/,要求目标URL末尾带/且后端适配子路径;场景三:/old/→/new/,须用 RewriteRule+[P] 实现路径名替换。

ProxyPass 本身不重写路径,它只做请求转发;真正实现“路径重写”的,是靠匹配规则设计 + 后端适配 + 配合 ProxyPassReverse 和 RewriteRule(必要时)。Apache 不像 Nginx 那样内置路径替换逻辑,它的“重写”是隐含在路径前缀对齐和代理行为中的。
下面分三种典型场景说明怎么写:
✅ 场景一:把 /admin/ 映射到后端根路径(最常用)
你想让访问 https://example.com/admin/xxx 实际请求 http://backend:8080/xxx(即去掉 /admin/ 前缀):
ProxyPass /admin/ http://backend:8080/ ProxyPassReverse /admin/ http://backend:8080/
关键点:
- 两端都带末尾斜杠
/admin/和http://backend:8080/ - Apache 自动剥离
/admin/,再拼接到后端 URL 后(如/admin/api/login→http://backend:8080/api/login) -
ProxyPassReverse必须严格一致,才能修正后端返回的Location: /login等跳转头
✅ 场景二:把 /api/ 映射到后端子路径(如 /v2/)
你想让 https://example.com/api/users 转发为 http://svc:3000/v2/users:
安全更新和维护 CLI Proxy API(CPA)部署与配置。用于 CPA 镜像升级、配置变更、认证目录兼容修复、上线验证与回滚。适用于用户提到“CPA 更新/升级/配置改了/容器重建/回滚”等场景。
ProxyPass /api/ http://svc:3000/v2/ ProxyPassReverse /api/ http://svc:3000/v2/
注意:
- 目标 URL 末尾也必须有
/,否则/api/users会变成http://svc:3000/v2//users(双斜杠可能出错) - 后端需知道它实际运行在
/v2/下,否则生成的相对链接(如<script src="/static/app.js">)仍会 404
✅ 场景三:需要改写路径结构(比如把 /old/ → /new/)
ProxyPass 不能直接改路径名,但可用 mod_rewrite + [P] 标志实现灵活重写:
RewriteEngine On RewriteRule ^/old/(.*)$ /new/$1 [P] ProxyPassReverse /old/ http://backend:8080/new/
说明:
-
RewriteRule先把/old/xxx改成/new/xxx,再用[P]交给代理模块处理 -
ProxyPassReverse仍要按后端实际返回的 Location 头格式来写,比如后端跳转返回Location: http://backend:8080/new/login,你就得配http://backend:8080/new/ - 这种写法适合做兼容层、URL 升级,但性能略低于纯
ProxyPass
不复杂但容易忽略

















