apache ssl/tls终止即由其解密https再以http转发后端,适合中小部署但高并发时cpu压力大;需启用mod_ssl、mod_proxy等模块,配置证书、proxypreservehost、proxypass及x-forwarded-proto头,并禁用旧协议、限定加密套件、开启hsts。

Apache 代理支持 SSL/TLS 终止,本质是让 Apache 自己处理 HTTPS 解密,再以明文 HTTP 转发给后端服务。这种模式适合中小型部署,配置直接、可控性强;但高并发场景下会显著增加 Apache 的 CPU 压力——因为 TLS 握手和加解密全由它承担。
启用 mod_ssl 和代理模块
确保以下模块已加载(通常在 /etc/httpd/conf.modules.d/00-base.conf 或 /etc/apache2/mods-enabled/ 中):
- mod_ssl.so:提供 HTTPS 支持
- mod_proxy.so:启用代理功能
- mod_proxy_http.so:支持 HTTP 协议转发
-
mod_headers.so(可选):用于传递原始协议头,如
X-Forwarded-Proto
若未启用,用 a2enmod ssl proxy proxy_http headers(Ubuntu/Debian)或在 CentOS 中取消 LoadModule 行的注释,并重启服务。
Apache Superset 是一个广泛采用的开源 BI 平台,用于 SQL 探索、图表构建和仪表板交付。当代理需要查询仓库数据、组装仪表板或使用成熟的分析界面解释指标而不是临时笔记本代码时,此技能非常有用。
配置 HTTPS 虚拟主机并终止 SSL
在 VirtualHost *:443 块中完成证书加载与代理设置:
- 用
SSLEngine on开启 SSL - 指定证书三件套:
SSLCertificateFile(公钥)、SSLCertificateKeyFile(私钥)、SSLCertificateChainFile(中间证书) - 添加
ProxyPreserveHost On保留原始 Host 头,避免后端路由出错 - 用
ProxyPass和ProxyPassReverse定义路径映射,例如将/api/转发到http://127.0.0.1:8080/ - 加上
RequestHeader set X-Forwarded-Proto "https",让后端知道请求原本是 HTTPS
安全加固关键项
仅开放 HTTPS 不代表安全,还需主动约束通信质量:
- 禁用老旧协议:
SSLProtocol all -SSLv2 -SSLv3 -TLSv1 -TLSv1.1(推荐仅留 TLSv1.2/TLSv1.3) - 限制加密套件:
SSLCipherSuite ECDHE-ECDSA-AES128-GCM-SHA256:ECDHE-RSA-AES128-GCM-SHA256等前向保密优先组合 - 开启 HSTS(可选但推荐):
Header always set Strict-Transport-Security "max-age=31536000; includeSubDomains" - 若代理目标是 HTTPS 后端(如调用另一个 API),需额外启用
SSLProxyEngine on并配置 CA 信任链,否则握手失败
验证与调试要点
配置完成后别急着上线,重点检查三项:
- 执行
apachectl configtest确保语法无误 - 用
curl -I https://yourdomain.com查看响应头是否含200 OK及Strict-Transport-Security - 查看错误日志(error_log)是否有 TLS 握手失败、证书路径错误或代理连接拒绝等记录
- 确认后端服务收到的
X-Forwarded-For和X-Forwarded-Proto头正确,避免重定向循环或混合内容警告










