必须启用mod_proxy_connect模块并配置proxyrequests on、allowconnect端口及访问控制,才能实现https隧道代理;它仅透传tcp连接,不解析https内容,需配合mod_proxy等依赖模块,并严格限制可信内网ip访问。
要让 apache 支持 https 隧道代理(即客户端通过 connect 方法建立加密隧道),必须正确启用并配置 mod_proxy_connect 模块。它不处理 https 内容,只负责透传 tcp 连接,因此适用于浏览器设置 http 代理后访问 https 网站、开发调试或内网安全出向等场景。
加载模块并确认依赖
该模块默认未启用,需手动加载:
- 检查
modules/mod_proxy_connect.so(Linux/macOS)或modules/mod_proxy_connect.dll(Windows)是否存在 - 在
httpd.conf中添加:LoadModule proxy_connect_module modules/mod_proxy_connect.so - 确保基础代理模块已启用:
LoadModule proxy_module modules/mod_proxy.so - 若还需代理普通 HTTP 请求,也建议启用:
LoadModule proxy_http_module modules/mod_proxy_http.so
配置允许的 CONNECT 目标端口
mod_proxy_connect 默认只放行 443、563 等硬编码端口。如需代理 8443、9443 等非标 HTTPS 端口,必须显式声明:
安全更新和维护 CLI Proxy API(CPA)部署与配置。用于 CPA 镜像升级、配置变更、认证目录兼容修复、上线验证与回滚。适用于用户提到“CPA 更新/升级/配置改了/容器重建/回滚”等场景。
- Apache 2.4.10 及以上推荐写法:
ProxyRemoteConnect all on - 旧版本兼容写法:
AllowCONNECT 443 8443 9443 - 生产环境禁止使用
AllowCONNECT 0-65535,存在安全风险
开启正向代理并严格限源
仅加载模块不够,还需启用正向代理功能,并限制可发起 CONNECT 的客户端范围:
- 启用正向代理:
ProxyRequests On - 用
<proxy></proxy>块控制访问权限:<proxy><br> Require ip 192.168.1.0/24<br></proxy>
(替换为实际可信内网段,严禁开放公网) - 避免误配成反向代理:不要在
ProxyPass中使用https://,mod_proxy_connect不支持反向 HTTPS 代理逻辑
客户端验证与注意事项
配置生效后,客户端需主动设置代理:
- 浏览器或
curl -x http://apache-host:80指向 Apache 服务 - 访问 HTTPS 网站(如
https://example.com)时,浏览器会自动发出 CONNECT 请求 - 查看 Apache 日志(
logs/access_log)中是否出现"CONNECT example.com:443 HTTP/1.1"记录 - 若返回 403,优先检查 IP 是否匹配、防火墙是否放行端口、
Require ip是否写错网段









