微服务部署时,很多端口都需要监听,但不都应该对外暴露。这个项目的网络原则很简单:公网只访问 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 这类地址,只适合本机或内网调试。绕过网关的访问一旦出现在公网,统一鉴权、限流和审计都会失去意义。