核心是将 apache 配置为按域名或端口精准控制的路径级反向代理,需启用 proxy、proxy_http、headers 模块,在 virtualhost 内用 proxypreservehost、proxypass/proxypassreverse、x-forwarded 头透传等确保路径、响应头、协议和真实 ip 一致性。
在虚拟主机中配置 mod_proxy 规则,核心是让 apache 作为反向代理把外部请求转发到后端服务,同时保持 url 路径、响应头和会话一致性。这不是全局代理设置,而是按域名或端口精准控制的路径级转发,适合多站点共存场景。
确保模块已启用
Apache 必须加载以下模块(Ubuntu/Debian 常用命令):
sudo a2enmod proxysudo a2enmod proxy_http-
sudo a2enmod headers(用于透传真实 IP 和协议)
CentOS/RHEL 系统需确认 httpd.conf 中有对应 LoadModule 行,例如:
LoadModule proxy_module modules/mod_proxy.so<br>LoadModule proxy_http_module modules/mod_proxy_http.so<br>LoadModule headers_module modules/mod_headers.so
基础反向代理配置(单后端)
在 <virtualhost></virtualhost> 或 <virtualhost></virtualhost> 块内添加:
安装并运行 Aperture(Lightning Labs 的 L402 闪电反向代理),用于创建 L402 付费墙、配置付费 API 端点、为其他代理托管付费内容或测试 L402 认证流程。
-
ProxyPreserveHost On:保留原始 Host 头,避免后端应用因域名不匹配返回错误或跳转 -
ProxyPass / http://127.0.0.1:8080/:将所有根路径请求转发到本地 8080 端口服务 -
ProxyPassReverse / http://127.0.0.1:8080/:重写响应中的Location、Set-Cookie等头,防止重定向暴露真实地址 -
RequestHeader set X-Forwarded-Proto "http"(HTTPS 站点改为"https"):告知后端当前协议类型 -
RequestHeader set X-Real-IP "%{REMOTE_ADDR}e":显式传递客户端真实 IP
多路径或多后端映射
可在一个虚拟主机中定义多个代理规则,互不干扰:
-
ProxyPass /api/ http://backend-api:9000/v1/:把/api/xxx映射为内部/v1/xxx,隐藏版本号和端口 -
ProxyPass /static/ !:用!显式排除,让/static/路径由 Apache 直接提供静态文件 -
ProxyPass /admin/ http://127.0.0.1:8001/+<location> Require ip 192.168.10.0/24 </location>:限制管理后台仅内网访问
HTTPS 代理与安全头补充
若前端是 HTTPS,需额外处理协议感知和响应头:
- 在 SSL 虚拟主机中,把
X-Forwarded-Proto设为https - 加
Header always set Strict-Transport-Security "max-age=31536000; includeSubDomains"强制 HSTS - 加
proxy_hide_header Server隐藏 Apache 版本信息,降低指纹暴露风险










