本地如何运行配置在同一自定义域名下的多个微服务?
多Serverless服务本地统一端口代理方案
以下是三种可落地的实现方式:
方案1:基于Serverless Compose实现官方原生统一网关
这是改动最小的官方推荐方案,无需引入额外工具:
- 首先在项目根目录新建
serverless-compose.yml,在配置中声明所有关联的子服务路径 - 给每个子服务的
serverless.yml中添加serverless-offline的配置项noStart: true,关闭子服务自身的API网关启动逻辑 - 在根目录的配置中指定
serverless-offline的统一监听端口,所有子服务的路由会自动注册到该网关实例下 - 本地启动时直接在根目录执行
serverless offline命令即可,所有服务的接口都将通过同一个端口对外暴露,跨服务的会话Cookie可以正常传递
方案2:本地反向代理端口聚合
如果不想改动现有服务的配置逻辑,可以用反向代理工具做端口统一转发:
- 可选用的工具包括Nginx、Caddy,或者Node生态的
http-proxy-middleware轻量代理 - 配置转发规则:按照接口的路径前缀匹配到对应
serverless-offline实例的端口,例如/api/auth/*前缀的请求转发到会话服务的本地端口,/api/order/*前缀的请求转发到业务功能服务的本地端口 - 前端所有请求统一发送到反向代理的监听端口即可,会话信息会被正常携带转发到对应服务,不会出现跨端口会话失效的问题
方案3:单配置文件合并路由
如果服务数量较少,可以直接将所有服务的路由合并到同一个serverless.yml配置中:
- 在公共配置文件中定义所有API路由,handler路径指向对应子服务的函数入口文件
- 直接启动该公共配置的
serverless-offline实例,即可实现所有服务接口共用同一个端口
内容的提问来源于stack exchange,提问作者Akshay Kumar
相关产品推荐
相关产品推荐

