Apache反向代理可在入口层统一鉴权,通过Location块结合Require ip或AuthType Basic实现路径级IP白名单或用户+IP双重校验,需启用mod_proxy、mod_proxy_http和mod_authz_core,并确保ProxyRequests Off。

Apache 本身不直接鉴权,但可以通过 mod_proxy 搭配访问控制模块,在反向代理入口层统一拦截并限制后端接口的访问来源。核心思路是:把控制逻辑放在 ProxyPass 前,而不是交给后端各自处理。
在 Location 块中配置路径级 IP 白名单
这是最常用、最清晰的方式。所有匹配该路径的请求,必须先通过 IP 校验,再转发。
- 确保已启用
mod_proxy、mod_proxy_http和mod_authz_core - 在虚拟主机或主配置中添加如下结构(以
/api/为例):
<Location "/api/">
ProxyPass "http://192.168.1.20:8080/"
ProxyPassReverse "http://192.168.1.20:8080/"
Require ip 192.168.10.0/24 10.0.5.100
</Location>
这样,只有来自 192.168.10.0/24 网段或单个 IP 10.0.5.100 的请求才能访问 /api/ 下的所有后端接口,其他请求直接返回 403。
结合用户认证与 IP 双重校验
适用于需“内网免密、外网强认证”或“某 IP 段仅限指定用户”的场景。
- 先用
AuthType Basic做身份识别,再叠加Require组合条件 - 示例配置:
<Location "/admin-api/">
AuthType Basic
AuthName "Admin API"
AuthUserFile /etc/apache2/auth/.htpasswd
Require ip 192.168.5.0/24
Require user admin ops
</Location>
该配置表示:只允许来自 192.168.5.0/24 的请求,且用户必须是 admin 或 ops 才能访问 /admin-api/。
Apache Superset 是一个广泛采用的开源 BI 平台,用于 SQL 探索、图表构建和仪表板交付。当代理需要查询仓库数据、组装仪表板或使用成熟的分析界面解释指标而不是临时笔记本代码时,此技能非常有用。
按文件或 URI 特征做细粒度拦截
当只需保护某些敏感接口(如含 delete、export 的路径),可用 <FilesMatch> 或表达式控制。
- 禁止外部访问所有导出类接口:
<Location "/api/">
ProxyPass "http://backend:8080/"
ProxyPassReverse "http://backend:8080/"
<FilesMatch "export|delete">
Require ip 127.0.0.1 192.168.1.100
</FilesMatch>
</Location>
或者用表达式更灵活地匹配:
Require expr %{REQUEST_URI} =~ m#^/api/v1/(export|batch-delete)# && %{REMOTE_ADDR} in {"127.0.0.1", "192.168.20.50"}
注意关键细节
ProxyRequests 必须关闭:防止 Apache 被用作开放代理,应在主配置中确认 ProxyRequests Off。
Require 指令必须配合认证上下文才生效:如果没设 AuthType,单独写 Require ip 在某些 Apache 版本下可能被忽略;建议始终包裹在 <Location> 或 <Directory> 块中。
HTTPS 环境优先使用:若启用了 Basic 认证,务必搭配 mod_ssl 强制 TLS,避免密码明文传输。

















