最近在学习Kong网关,因此根据老习惯,我会将我的学习过程记录下来,一来体系化整理,二来作为笔记供将来翻看。由于我司会直接使用Kong企业版,学习过程中我会使用Kong开源版。
本篇,我们学习快速配置HTTPS跳转 与 TCP流代理。
HTTP协议虽然应用广泛,简单易用,但存在着巨大的安全隐患,容易被抓包劫持和修改,尤其对于敏感信息的传递是十分不安全的。而HTTPS则通过数字证书、加密算法和非对称加密算法等技术对信息进行了加密,进而提高了一定的安全性。
在实际场景中,如果我们需要设置HTTP请求自动跳转到HTTPS的跳转,在Kong中只需要将对应路由的配置做以下两个修改即可:
(1)将Https Redirect Status Code改为301,即Moved Permanently永久重定向。
(2)将Protocols设置仅为https。
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的云原生微服务网关》
扫码关注腾讯云开发者
领取腾讯云代金券
Copyright © 2013 - 2025 Tencent Cloud. All Rights Reserved. 腾讯云 版权所有
深圳市腾讯计算机系统有限公司 ICP备案/许可证号:粤B2-20090059 深公网安备号 44030502008569
腾讯云计算(北京)有限责任公司 京ICP证150476号 | 京ICP备11018762号 | 京公网安备号11010802020287
Copyright © 2013 - 2025 Tencent Cloud.
All Rights Reserved. 腾讯云 版权所有