跳转到主要内容
下面的配置按公网访问里推荐的做法:一个 Gateway 挂在内网负载均衡上,一个挂在公网负载均衡上;同一个域名 molesignal.example.com 在内网 DNS 和公网 DNS 里分别解析到它们。示例用 Gateway API v1,适用于各个实现;IP 白名单、限流、请求体上限和访问日志不在 Gateway API 里,由实现自己的策略提供,见实现提供的策略。MoleSignal 的 Service 在命名空间 molesignal 里,名字是 molesignal、端口 5080;分角色部署时换成 router 的 Service。

两个 Gateway

gatewayClassName 填所用实现的 GatewayClass。内网 Gateway 要落在内网负载均衡上:实现支持 infrastructure 时,用它把云厂商的注解带到负载均衡的 Service 上;不支持时按实现的文档配置。

内网 HTTPRoute

内网 HTTPRoute 转发全部路径。实时查询是流式响应,单独给它放长超时:

公网 HTTPRoute

公网 HTTPRoute 只匹配要开放的路径,并限定方法;没有匹配的请求由网关返回 404。只保留实际用到的匹配:
PathPrefix 按路径段匹配:/s 匹配 /s/<分享 Token>,不匹配 /shared。按方法匹配属于 Gateway API 的扩展功能,大多数实现支持;所用实现不支持时去掉 method,由 MoleSignal 对不接受的方法返回 405 或 404。

实现提供的策略

按来源地址放行、限流、请求体上限和识别真实客户端地址都不在 Gateway API 里,由各实现用自己的资源提供,例如:
  • Envoy Gateway:SecurityPolicy 按来源地址放行,BackendTrafficPolicy 限流,ClientTrafficPolicy 识别真实客户端地址。
  • Istio:AuthorizationPolicy 按来源地址放行。
  • NGINX Gateway Fabric:ClientSettingsPolicy 设置请求体上限。
用其他实现时,按它的文档配置同样的限制。例如在 Envoy Gateway 上只允许 Azure 服务标记 AzureBotService 里的地址段访问 Teams 的回调:把 Teams 的匹配挪到单独的 HTTPRoute molesignal-public-teams,再给它挂一个 SecurityPolicy:

状态页的自定义域名

状态页绑定了 status.example.org 时,给公网 Gateway 加一个这个域名的监听器,再加一条只放行状态页根路径、接口和网页文件的 HTTPRoute:

检查

确认两个 Gateway 都拿到了地址,HTTPRoute 的状态是 Accepted 和 ResolvedRefs:
从公网请求登录接口应返回 404,不带 Token 请求告警接入应返回 401:
最后在 _sys 组织的 设置 → 客户端 IP 识别 里,把公网网关的代理所在的网段列为受信任的代理,见客户端 IP 识别。
最后修改于 2026年10月31日