最近在学习Kong网关,因此根据老习惯,我会将我的学习过程记录下来,一来体系化整理,二来作为笔记供将来翻看。由于我司会直接使用Kong企业版,学习过程中我会使用Kong开源版。
本篇,我们学习快速配置HTTPS跳转 与 TCP流代理。
HTTPS跳转配置
HTTP协议虽然应用广泛,简单易用,但存在着巨大的安全隐患,容易被抓包劫持和修改,尤其对于敏感信息的传递是十分不安全的。而HTTPS则通过数字证书、加密算法和非对称加密算法等技术对信息进行了加密,进而提高了一定的安全性。
在实际场景中,如果我们需要设置HTTP请求自动跳转到HTTPS的跳转,在Kong中只需要将对应路由的配置做以下两个修改即可:
(1)将Https Redirect Status Code改为301,即Moved Permanently永久重定向。
(2)将Protocols设置仅为https。
TCP流代理
Kong不仅可以针对第七层即应用层的HTTP代理,还可以对第四层即传输层进行TCP代理。默认情况下,流代理是关闭的,需要我们手动的打开。
这里,我们调整一下docker-compose.yml文件中kong服务的参数,添加tcp流监听,这里我们设置的是7000端口来监听tcp流:
####################################### # Kong: The API Gateway ####################################### kong: image: ${KONG_DOCKER_TAG:-kong:latest} restart: on-failure networks: - kong-net environment: KONG_DATABASE: postgres KONG_PG_HOST: kong-database KONG_PG_DATABASE: kong KONG_PG_USER: kong KONG_PG_PASSWORD: ${KONG_PG_PASSWORD:-kong} KONG_PROXY_LISTEN: 0.0.0.0:8000 KONG_PROXY_LISTEN_SSL: 0.0.0.0:8443 KONG_ADMIN_LISTEN: 0.0.0.0:8001 KONG_ADMIN_LISTEN_SSL: 0.0.0.0:8444 KONG_STREAM_LISTEN: 0.0.0.0:7000 # 新增内容 depends_on: - kong-database healthcheck: test: ["CMD", "kong", "health"] interval: 10s timeout: 10s retries: 10 ports: - "7000:7000" # 新增内容 - "80:8000" - "8001:8001" - "443:8443" - "8444:8444"
修改完成之后,重新启动kong:
docker-compose up -d
这里,我们假设有一个MongoDB服务,我们需要设置客户端统一通过Kong来访问MongoDB服务,即使用Kong的TCP流代理来做转发。这在内网访问DB的场景中还是比较常见的。
首先,我们的服务器172.16.16.4上面有一个MongoDB服务,它的端口号是27017,我们可以通过客户端连接到MongoDB中。
现在,我们来用Kong来做MongoDB服务的代理。
首先,创建一个Service,取名为:mongodb-tcp-service,并设置Protocol为tcp。
随后,添加一条路由,取名为:mongodb-tcp-route。
这里,需要注意的是Sources的配置,一般情况下,我们对生产环境的数据库客户端访问通常是开白名单的方式,也就是指定IP地址才能访问。这里,为了方便测试,我们设置为0.0.0.0/0即所有客户端IP都可以访问。
配置完成后,便可以在客户端通过连接Kong的7000端口访问MongoDB数据库了。
测试一下,连接成功!
此外,我们还可以把上游的mongodb节点配置成upstream,这样就可以实现负载均衡的效果。这里就不再演示了,有兴趣的童鞋可以自己去试一试。
参考资料
闫观涛,《Kong入门与实践-基于Nginx和OpenRestry的云原生微服务网关》
作者:周旭龙
出处:https://edisonchou.cnblogs.com
本文版权归作者和博客园共有,欢迎转载,但未经作者同意必须保留此段声明,且在文章页面明显位置给出原文链接。
标签:0.0,Kong,TCP,kong,HTTPS,MongoDB,KONG From: https://www.cnblogs.com/edisonchou/p/edc_kong_learning_notes_chap6.html