kong搭建一套微信小程序的公司研发环境

一、物理架构

微信小程序H5部署在微信公众平台,需要通过外网域名访问到公司机房。

为了区分生产和研发环境,需要创建两个外网域名。

另外,微信小程序需要配置业务域名, 请参考文章- 微信小程序的业务域名配置(通过kong网关的pre-function配置)

本文试着图文结合的方式,把整个流程要做的事项梳理出来,以供参考。

二、新建外网域名

无论是研发环境域名,还是正式环境域名,均指向IDC的kong。

研发环境的搭建,相当于是把正式环境一拆为二,一部分配置在IDC kong,另一部分配置在公司研发环境 kong。

接下来就详细说一说kong应该如何配置路由及upstream。

三、kong route 路由配置


Hosts 填写测试外网域名,指向公司研发环境。

四、kong upstream 配置

填写公司研发环境的外网出口IP及端口, 此端口6008映射到公司研发环境下的kong_80端口。

回过头说一下,Kong service的配置,有一个地方需要和这里的upstream名称保持一致。

至此,当用户访问测试外网域名的时候,请求将转发至公司研发环境kong上。

下面,我们将说明公司研发环境应该如何配置kong。

五、公司研发环境Kong

  • service配置,Host填写upstream名称,默认所有的请求都将转发至该upstream的意思
  • upstream配置,跟普通的服务一样,填写内网IP和端口
  • route配置,是我们的重点,详细见下文

前文也说了,公司研发环境下,暴露的外网端口是6008,它将指向Kong。

但是,当有多个域名都想要指向公司研发的kong时,为了区分不同的路由,所以在Path增加不同的前缀。

比如说,122.220.130.109/user 指向 kong 的 user-service(kong service的名称),

现在新增了一个product-service(kong service的名称),

在外网地址相同且只有一个的情况下,product-service的路由地址就不能是122.220.130.109/user,而应该是122.220.130.109/product。

这样,通过path的不同,把同一个外网地址,路由到不同的service下。

对于外网来说,公司研发环境kong就只有一个外网地址,它就是122.220.130.109。

理解了这一层,下面的路由创建就容易理解了。

测试验证方法,curl某个接口,比如curl http://122.220.130.109:6008/dev/api/v1/pub/userId/1001/info

如果是通的,说明公司研发环境下的路由没问题。

接下来就使用外网域名进一步验证:

还是curl同一个接口,比如curl http://xxx-test.edu.net/dev/api/v1/pub/userId/1001/info

如果是通的,才说明整个链路畅通。

除了创建这个接口路由,还需创建一个路由,用于配置业务域名。(前文已提及,这里就不赘述)

六、总结

本文通过图文的方式,把微信小程序的公司研发环境搭建整过程详细描述,使用到的api网关是kong。

如果是其他网关,原理大同,见文章最开头的架构图。

另外,你需要知道公司研发环境的网络相关知识,比如外网和内网的端口映射应该如何做。

相关推荐
cyforkk32 分钟前
12、Java 基础硬核复习:集合框架(数据容器)的核心逻辑与面试考点
java·开发语言·面试
身如柳絮随风扬6 小时前
Java中的CAS机制详解
java·开发语言
风筝在晴天搁浅7 小时前
hot100 78.子集
java·算法
故事和你918 小时前
sdut-Java面向对象-06 继承和多态、抽象类和接口(函数题:10-18题)
java·开发语言·算法·面向对象·基础语法·继承和多态·抽象类和接口
Configure-Handler8 小时前
buildroot System configuration
java·服务器·数据库
:Concerto9 小时前
JavaSE 注解
java·开发语言·sprint
电商API_180079052479 小时前
第三方淘宝商品详情 API 全维度调用指南:从技术对接到生产落地
java·大数据·前端·数据库·人工智能·网络爬虫
一点程序10 小时前
基于SpringBoot的选课调查系统
java·spring boot·后端·选课调查系统
C雨后彩虹10 小时前
计算疫情扩散时间
java·数据结构·算法·华为·面试
2601_9498095910 小时前
flutter_for_openharmony家庭相册app实战+我的Tab实现
java·javascript·flutter