最近在学习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

本文版权归作者和博客园共有,欢迎转载,但未经作者同意必须保留此段声明,且在文章页面明显位置给出原文链接。

Kong入门学习实践(6)HTTPS与TCP流代理的更多相关文章

  1. Nacos入门学习&实践

    文中涉及到了一些模块代码没有给出,我一并上传到github了,可以整个项目clone下来进行调试. 地址:https://github.com/stronglxp/springcloud-test 1 ...

  2. 万字长文:SpringCloud gateway入门学习&实践

    官方文档:https://cloud.spring.io/spring-cloud-static/spring-cloud-gateway/2.2.1.RELEASE/reference/html/# ...

  3. 学习资源 Docker从入门到实践 pdf ,docker基础总结导图

    学习资源 Docker从入门到实践 pdf ,docker基础总结导图 Docker从入门到实践 pdf 云盘地址:https://pan.baidu.com/s/1vYyxlW8SSFSsMuKaI ...

  4. 《深度学习框架PyTorch:入门与实践》的Loss函数构建代码运行问题

    在学习陈云的教程<深度学习框架PyTorch:入门与实践>的损失函数构建时代码如下: 可我运行如下代码: output = net(input) target = Variable(t.a ...

  5. 入门python:《Python编程从入门到实践》中文PDF+英文PDF+代码学习

    入门python推荐学习久负盛名的python入门书籍<Python编程从入门到实践>. 书中涵盖的内容是比较精简的,没有艰深晦涩的概念,最重要的是每个小结都附带有"动手试一试& ...

  6. 《Python编程:从入门到实践》基础知识部分学习笔记整理

    简介 此笔记为<Python编程:从入门到实践>中前 11 章的基础知识部分的学习笔记,不包含后面的项目部分. 书籍评价 从系统学习 Python 的角度,不推荐此书,个人更推荐使用< ...

  7. dubbo学习实践(2)之Dubbo入门Demo

    开篇之前,先来了解下dubbo服务治理与技术架构,直接看图 dubbo技术架构图: 1. 新建dubbo项目,目录结构如下 代码说明: 1.代码分为Provider(服务提供方)与consumer(服 ...

  8. Aho-Corasick算法、多模正则匹配、Snort入门学习

    希望解决的问题 . 在一些高流量.高IO的WAF中,是如何对规则库(POST.GET)中的字符串进行多正则匹配的,是单条轮询执行,还是多模式并发执行 . Snort是怎么组织.匹配高达上千条的正则规则 ...

  9. 美图App的移动端DNS优化实践:HTTPS请求耗时减小近半

    本文引用了颜向群发表于高可用架构公众号上的文章<聊聊HTTPS环境DNS优化:美图App请求耗时节约近半案例>的部分内容,感谢原作者. 1.引言 移动互联网时代,APP 厂商之间的竞争非常 ...

  10. Nginx 入门学习教程

    昨天听一个前同事说他们公司老大让他去研究下关于Nginx 方面的知识,我想了下Nginx 在如今的开发技术栈中应该会很大可能会用到,所以写篇博文记录总结下官网学习教程吧. 1. 什么是Nginx? 我 ...

随机推荐

  1. CompletableFuture原理及应用场景详解

    1.应用场景 现在我们打开各个APP上的一个页面,可能就需要涉及后端几十个服务的API调用,比如某宝.某个外卖APP上,下面是某个外卖APP的首页.首页上的页面展示会关联很多服务的API调用,如果使用 ...

  2. 《机器人SLAM导航核心技术与实战》先导课:课程大纲

    <机器人SLAM导航核心技术与实战>先导课:课程大纲 视频讲解 [先导课]1.课程大纲-视频讲解 [先导课]1.1.课程大纲-学习思维导图(上)-视频讲解 [先导课]1.2.课程大纲-学习 ...

  3. markdown常用命令行格式

    Markdown 主要命令(语法)如下: 标题 使用 # 号表示标题,# 的个数决定标题的级别: 一级标题 二级标题 三级标题 四级标题 五级标题 六级标题 段落 & 换行 直接输入文字形成段 ...

  4. python,循环中通过判断条件中止循环的方法(braek 语句)

    直接对下方代码进行解析 for a in range(5): print(a) if a == 2: break 依次读取range内的数字,并答应出来.当读取出来的数字是2时,结束循环,执行后入下图 ...

  5. Nim 概念 Concept 对性能的影响

    Nim 概念 Concept 对性能的影响 继上一篇文章<C# 泛型编译特性对性能的影响>后,我又研究了 Nim 语言相关的设计,由于 Nim 语言与 C# 语言有些差异,比如Nim 没有 ...

  6. OSCP靶场练习从零到一之TR0LL: 1

    本系列为 OSCP 证书学习训练靶场的记录,主要涉及到 vulnhub.HTB 上面的 OSCP 靶场,后续慢慢更新 1.靶场介绍 名称: TR0LL: 1 下载地址: https://www.vul ...

  7. 【代码】JS|前端密码,浪漫至死不渝,祝我生日快乐

    今天是特别的日子,我想把这篇存稿发出来. 一次缺席,次次缺席,便不再期待重逢. 也是时候,解开最后一个设计过的谜题. 学加密的同时,我恰好写前端比较多,也有朋友找我测试他们前端页面上的加密方案的安全性 ...

  8. 全国海域潮汐表查询微信小程序详情教程及代码

    最近在做一个全国海域潮汐表查询,可以为赶海钓鱼爱好者提供涨潮退潮时间表及潮高信息.下面教大家怎么做一个这样的小程序.主要功能,根据IP定位地理位置,自动查询出省份或城市的港口,进入后预测7天内港口潮汐 ...

  9. SpringBoot中的拦截器江湖

    前言 很多小伙伴在工作中遇到拦截需求就无脑写HandlerInterceptor,结果被复杂场景搞得鼻青脸肿. 作为一名有多年开发经验的程序员,今天领大家到SpringBoot的山头认认6把交椅: 这 ...

  10. Qml Console

    动机:qmlconsole类似于chrome浏览器的devtool.用于运行时调试qml代码.用javascript控制台,执行指令.包括本软件提供的内置函数. 本项目整合到KTL项目上.但是KTL使 ...