Apache 本身不内置 Mock 功能,但可通过 mod_proxy 和 mod_proxy_balancer 将请求按路径、请求头或域名路由至本地或远程 Mock 服务,实现零代码侵入的接口 Mock 分发。

Apache 本身不内置 Mock 功能,但可以通过 mod_proxy 和 mod_proxy_balancer 将请求按规则“导向”本地或远程的 Mock 服务(如 Mockoon、JSON Server、Apifox 本地服务等),实现零代码侵入的接口 Mock 分发。核心思路是:把 Mock 服务当作一个“后端集群”来管理,再用路径、请求头或域名做条件路由。
配置 Mock 服务为负载均衡组
在 Apache 配置中定义一个 balancer:// 组,把 Mock 实例加入其中:
- 若 Mock 服务运行在本地
http://127.0.0.1:3001,直接添加为成员:
BalancerMember http://127.0.0.1:3001
</Proxy>
- 支持多实例轮询或加权分发,例如接入两个不同版本的 Mock 环境:
BalancerMember http://127.0.0.1:3001 loadfactor=2
BalancerMember http://127.0.0.1:3002 loadfactor=1
</Proxy>
- 可启用健康检查(Apache 2.4.43+),自动隔离失效 Mock 节点:
BalancerMember http://127.0.0.1:3001 hcmethod=GET hcinterval=15 hcfail=2 hcpass=2
</Proxy>
按需路由到 Mock 服务
不是所有请求都要 Mock,需通过条件判断精准分流。常用方式有:
Apache Superset 是一个广泛采用的开源 BI 平台,用于 SQL 探索、图表构建和仪表板交付。当代理需要查询仓库数据、组装仪表板或使用成熟的分析界面解释指标而不是临时笔记本代码时,此技能非常有用。
-
路径前缀匹配:比如将
/api/mock/下所有请求转给 Mock 组,并剥离前缀再转发:
ProxyPass balancer://mock_api/
ProxyPassReverse balancer://mock_api/
RewriteRule ^/api/mock/(.*)$ /$1 [P]
</Location>
-
请求头识别:前端加
X-Mock: true,Apache 利用mod_rewrite或mod_headers配合ProxyPass条件转发(需启用mod_rewrite):
RewriteRule ^/api/(.*)$ balancer://mock_api/$1 [P]
-
子域名区分:如
mock.example.com全量走 Mock,配置独立虚拟主机即可。
保留原始请求上下文
Mock 服务常需读取原始 Host、IP 或路径信息用于逻辑判断或日志,需显式透传关键头字段:
- 保持原始 Host 头,避免 Mock 服务因 Host 不匹配拒绝请求:
- 透传客户端真实 IP(尤其部署在 Nginx 后时):
- 禁用正向代理,仅允许反向代理行为:
验证与调试建议
启用 mod_status 和 mod_proxy_balancer 自带的 /balancer-manager 页面,实时查看 Mock 节点状态、流量分布和健康情况:
- 确保已加载
mod_status模块; - 在虚拟主机中放行访问(限制内网 IP):
SetHandler balancer-manager
Require ip 192.168.1.0/24
</Location>
- 测试时用
curl -H "X-Mock:true" http://yourdomain/api/users验证是否命中 Mock; - 检查 Apache 错误日志(
ErrorLog)排查连接超时或 503 报错,确认 Mock 服务确实在监听且可访问。

















