mod_proxy_connect仅支持connect到443/563等硬编码白名单端口,无法代理8443等非标端口;需配合proxyrequests on、allowconnect显式放行及require ip严格限源,且不可用于反向代理场景。

mod_proxy_connect 是 Apache HTTP Server 提供的一个模块,专门用于支持 CONNECT 方法,从而实现 HTTPS 隧道代理(即客户端通过代理建立到目标 HTTPS 服务器的加密隧道)。它不处理 HTTPS 内容解密,只负责转发 TCP 连接,因此适用于需要中转加密流量的场景(如企业内网访问外部 HTTPS 站点、开发调试、或配合浏览器设置代理)。
启用 mod_proxy_connect 模块
该模块默认不启用,需手动加载:
- 确认模块文件存在:通常为 mod_proxy_connect.so(Linux/macOS)或 mod_proxy_connect.dll(Windows),位于 Apache 的 modules/ 目录下
- 在 httpd.conf 或主配置文件中添加:
LoadModule proxy_connect_module modules/mod_proxy_connect.so - 同时确保依赖模块已启用:
LoadModule proxy_module modules/mod_proxy.so
配置允许的 CONNECT 目标端口
mod_proxy_connect 默认仅允许连接到 443(HTTPS)、563(SNEWS)等安全端口。如需代理其他端口(如测试用的 8443、9443),必须显式配置:
安全更新和维护 CLI Proxy API(CPA)部署与配置。用于 CPA 镜像升级、配置变更、认证目录兼容修复、上线验证与回滚。适用于用户提到“CPA 更新/升级/配置改了/容器重建/回滚”等场景。
- 在 httpd.conf 或虚拟主机配置中添加:
ProxyRemoteConnect all on
(Apache 2.4.10+ 推荐方式) - 或使用旧版兼容写法(Apache AllowCONNECT 443 8443 9443
- 若不限制端口(不推荐生产环境):
AllowCONNECT 0-65535
启用正向代理并限制访问范围
仅启用模块还不够,还需配置 proxy 功能本身,并严格控制谁可以使用该隧道:
- 启用正向代理指令:
Require ip 192.168.1.0/24
(替换为你的可信内网网段,禁止开放给公网) - 禁用不必要的代理方法,只保留 CONNECT:
Require all denied
Require ip 192.168.1.0/24
(实际无需路径匹配,重点是 Proxy 指令的 Require 控制) - 避免误配成反向代理:不要在 ProxyPass 中使用 https://,mod_proxy_connect 不处理反向 HTTPS 代理逻辑
客户端使用与验证方法
配置生效后,客户端(如浏览器、curl)需显式设置 HTTP 代理指向该 Apache 服务:
- 浏览器设置代理地址为:http://your-apache-server:80(端口以 Listen 和 VirtualHost 为准)
- 验证是否生效:
– 访问 https://example.com,查看 Apache 的 access_log 是否出现 CONNECT example.com:443 HTTP/1.1 日志
– 使用 curl 测试:
curl -x http://localhost:80 https://httpbin.org/ip - 注意:浏览器对代理返回的非 200 响应(如 403、407)较敏感;确保 Require 规则允许客户端 IP,且未触发认证(除非你额外配置了 Basic Auth)
不复杂但容易忽略的是端口白名单和访问控制——漏掉 AllowCONNECT 或 Require 会导致连接被拒绝或直接透传失败。只要模块加载正确、端口放行、来源可信,HTTPS 隧道就能稳定建立。










