apache 不是微服务网关,但可作为反向代理前置层,通过 include 指令按服务拆分代理规则,统一入口并转发请求至专用网关(如 shenyu),由后者处理路由、限流等核心逻辑,apache 仅负责 tls 终止、cors 等边界功能。

Apache 本身不是微服务网关,它不原生支持服务发现、动态路由、熔断或 API 流控等网关核心能力。但你可以用 Apache 作为反向代理前置层,配合 Include 指令把不同后端服务(如 Spring Cloud Gateway、Apache Shenyu、Kong 或自建网关)的代理规则按服务维度拆分管理,实现配置清晰、职责分离的“类网关”组织方式。
明确角色:Apache 是代理层,不是网关逻辑层
别指望 Apache 自己做服务注册发现或鉴权决策。它的作用是:
- 统一入口(比如
https://api.example.com) - 按路径或域名把请求转发给下游真实网关(如
http://shenyu-gateway:9095) - 处理 TLS 终止、基础认证、CORS、日志隔离等通用边界功能
真正的路由策略、插件链、限流规则,应由专用网关(如 Shenyu)承担。
用 Include 把网关代理规则按服务拆到 conf.d/
在 /etc/httpd/conf.d/ 下为每个后端网关或业务域建独立配置文件,例如:
-
shenyu-proxy.conf→ 代理 Apache Shenyu 网关 -
kong-proxy.conf→ 代理 Kong 管理面或数据面 -
auth-proxy.conf→ 专用于 OAuth2 认证服务的代理 -
monitoring-proxy.conf→ 代理 Prometheus/Grafana 前端
主配置中确保已启用该目录加载:
/etc/httpd/conf/httpd.conf 中应有:IncludeOptional conf.d/*.conf这样新增一个 .conf 文件,重启或重载 httpd 即可生效,无需修改主配置。
Apache 2.4.62 官方 tar.gz 源码包是 Linux 及类 Unix 系统构建 Web 服务器的核心基础。通过源码编译安装,开发者能够灵活定制模块、优化性能并精准控制安装路径,满足多样化的业务需求。
每个 conf.d/ 文件专注一个代理目标
以 /etc/httpd/conf.d/shenyu-proxy.conf 为例:
<virtualhost>
ServerName api.example.com
ProxyPreserveHost On
ProxyRequests Off
<pre class="brush:php;toolbar:false;"># 仅代理 /gateway/ 路径下的请求到 Shenyu
<Location "/gateway/">
ProxyPass http://127.0.0.1:9095/
ProxyPassReverse http://127.0.0.1:9095/
Require all granted
</Location>
# 可选:健康检查路径透传
<Location "/actuator/health">
ProxyPass http://127.0.0.1:9095/actuator/health
ProxyPassReverse http://127.0.0.1:9095/actuator/health
</Location>
关键点:
- 用
<location></location>精确控制路径前缀,避免全局ProxyPass / - 始终配
ProxyPassReverse修正响应头中的 Location 和 Redirect - 若需 HTTPS,把
*:80改为*:443并加上 SSL 配置(证书、协议限制等)
配合 SELinux 和防火墙保障可用性
CentOS/RHEL 环境下常因权限拦截代理失败:
- 允许 httpd 发起网络连接:
setsebool -P httpd_can_network_connect 1 - 开放后端网关端口(如 9095)给 httpd 进程:
setsebool -P httpd_can_network_connect_db 1(若需连 DB) - 防火墙放行代理目标端口:
firewall-cmd --permanent --add-port=9095/tcp,再 reload
验证代理是否通:
curl -v http://localhost/gateway/actuator/health看是否返回 Shenyu 的健康状态,而非 502 或连接拒绝。










