node.js - 如何使我的微服务只能由 api 网关访问
问题描述
我想知道如何保护我的 Nodejs 微服务,以便只有 API 网关可以访问它。目前微服务暴露在我机器上的一个唯一端口上,可以直接访问,无需通过网关。这违背了网关作为系统中安全和授权信息交换的唯一入口点的目的。
微服务和网关目前是用 Nodejs 和 express 构建的。
该计划最终将其部署在云(数字海洋)上。我会很感激任何回应。谢谢。
解决方案
Kubernetes 可以解决这个问题。
Kubernetes 管理容器,每个容器都可以是一个微服务。在将微服务连接到网关服务器时,您可以选择只允许与网关服务器的外部连接。你的 kubernetes 集群中有一个负载均衡器/nginx,它将请求重定向到你的网关服务器。
Kubernetes 还有许多其他功能,例如:
- 服务发现:除非您的所有服务都具有静态 IP,否则您的每个微服务的 IP 都可能在重新启动/部署时发生变化。服务发现解决了这个问题。
- 高可用性 & 水平扩展 & 零停机时间:您可以为每个服务配置多个副本。因此,当其中一项服务出现故障时,仍有其他副本活着来处理剩余的请求。这也有助于 CICD。使用 github action 之类的东西,您可以制作流畅的 CICD 管道。当你部署一个新的 docker 镜像(更新一个微服务)时,kubernetes 会先启动一个新的容器,然后杀死旧的容器。因此,您的停机时间为零。
如果您正在使用微服务,那么您绝对应该深入了解 Kubernetes。
推荐阅读
- javascript - 在javascript中重定向网页
- html - 为什么列和换行中的 flexbox 被破坏
- java - 如何使用电报 api 从 chatid 中保存 id
- typeerror - TypeError:无法解压不可迭代的 int 对象以进行数据集扩充
- node.js - 尝试代理 websocket 并且在 setupProxy 中未建立连接
- reactjs - react-native 类组件中的替代 useState
- pytorch - 如何在 PyTorch 中获得组合网络的正确梯度?
- javascript - 一些图标点击监听器在 JavaScript 中可以正常工作,而另一些则不是很奇怪
- python - 不同 ID 的 Ngram,显示在一行中
- php - 如何在 Laravel / Lumen 8 的控制器中获取控制器和动作名称?