微服务部署时只暴露网关端口

zjc 于 2026-08-19 发布

微服务部署时,很多端口都需要监听,但不都应该对外暴露。这个项目的网络原则很简单:公网只访问 Gateway,业务服务和基础设施全部留在内网。

一、端口角色

service-gateway   80     对外入口
service-provider  9001   仅内网
service-consumer  9002   仅内网
service-mail      9004   仅内网
Nacos             8848 等 仅内网
MySQL             3306   仅内网
Zipkin            9411   仅内网

二、推荐拓扑

公网客户端
   |
Gateway
   |
业务服务内网
   |
Nacos / MySQL / Zipkin

外部请求统一经过网关,网关通过服务发现转发,业务服务之间也在内网通信。

三、安全组不要放大网段

只放行 Gateway 需要的 80 或 443;如果 Gateway 改用 9000,就只放行 9000。不要为了调试临时开放 9001、9002、9004,尤其不要把 Nacos 和 MySQL 直接暴露公网。

四、应用层校验只是兜底

可以在请求里增加来源标识、签名或 mTLS,防止业务端口被误访问。但这不能替代防火墙和安全组。网络边界是第一道,也是最可靠的一道。

五、经验总结

生产环境直接访问 http://host:9001/swagger-ui.html 这类地址,只适合本机或内网调试。绕过网关的访问一旦出现在公网,统一鉴权、限流和审计都会失去意义。