Apache反向代理核心依赖mod_proxy及其扩展模块,关键指令为ProxyPass和ProxyPassReverse;需先启用proxy、proxy_http等模块,再在VirtualHost中配置路径映射与响应头重写,并设置ProxyRequests Off等安全及优化参数。
apache 中配置反向代理,核心靠 mod_proxy 及其扩展模块,关键指令是 proxypass 和 proxypassreverse。配置前必须确保相关模块已启用,否则指令无效。
确认并启用必要模块
Apache 默认通常不启用代理模块,需手动加载。编辑主配置文件(如 /etc/httpd/conf/httpd.conf 或 /etc/apache2/apache2.conf),确保以下行未被注释:
LoadModule proxy_module modules/mod_proxy.soLoadModule proxy_http_module modules/mod_proxy_http.so- 如需 WebSocket 支持,加:
LoadModule proxy_wstunnel_module modules/mod_proxy_wstunnel.so
Ubuntu/Debian 系统还可使用 a2enmod proxy proxy_http 启用。
基础反向代理配置语法
在 <VirtualHost> 块内或主配置中添加规则。例如,将 /api/ 请求转发到后端服务:
安全更新和维护 CLI Proxy API(CPA)部署与配置。用于 CPA 镜像升级、配置变更、认证目录兼容修复、上线验证与回滚。适用于用户提到“CPA 更新/升级/配置改了/容器重建/回滚”等场景。
ProxyPass "/api/" "http://127.0.0.1:3000/" ProxyPassReverse "/api/" "http://127.0.0.1:3000/"
注意两点:
-
ProxyPass定义请求路径映射:客户端访问https://example.com/api/users→ 实际发往http://127.0.0.1:3000/users -
ProxyPassReverse重写响应头中的Location、Content-Location、Set-Cookie等 URL,避免后端返回的跳转或 Cookie 路径暴露真实地址
常见实用配置细节
实际部署中常需调整行为,避免 502/404 或会话异常:
- 禁用正向代理风险:
ProxyRequests Off(必须显式关闭,防止 Apache 被滥用为开放代理) - 设置超时与连接限制:
ProxyTimeout 30、ProxyBadHeader Ignore(忽略后端不良响应头) - 转发 Host 头:
ProxyPreserveHost On,让后端收到原始请求的Host值(对虚拟主机或多租户服务很重要) - 排除本地路径不代理:
ProxyPass "/static/" "!"(感叹号表示跳过,静态资源直接由 Apache 提供)
HTTPS 后端与协议升级支持
若后端是 HTTPS,只需把目标 URL 写成 https://...;但需额外启用 mod_ssl 并处理证书验证:
- 信任自签名证书:
SSLProxyVerify none+SSLProxyCheckPeerCN off(仅测试环境) - WebSocket 支持:
ProxyPass "/ws/" "ws://127.0.0.1:8080/ws/",配合mod_proxy_wstunnel - HTTP/2 后端暂不直通,Apache 2.4.53+ 支持
h2c明文 HTTP/2 代理,需明确指定协议

















