首页 > 其他分享 >Kong入门学习实践(6)HTTPS与TCP流代理

Kong入门学习实践(6)HTTPS与TCP流代理

时间:2023-06-28 22:57:59浏览次数:42  
标签:0.0 Kong TCP kong HTTPS MongoDB KONG

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

相关文章

  • Servlet p3 HttpServletRequest对象
    HttpServletRequest对象基本介绍​ HttpServletRequest对象:HttpServletRequest对象专门用于封装HTTP请求消息,简称request对象。主要作用是用来接收客户端发送过来的请求信息,该对象是由Tomcat封装好传递过来。​ HttpServletRequest接口是ServletRequest的子接口。HTTP请......
  • TCP的拥塞发生时为什么超时重传触发的是cwnd重置为1,而快速恢复触发的cwnd设置为cwnd/2
    首先要明确的是超时重传的情况相对于快速恢复而言是更恶劣的,发生了超时重传可以理解为超过了设定的时间都没有收到3个相同的ACK,那么网络肯定拥堵的更严重。所以超时重传时将cwnd重置为1,尽可能少的向网络中发送数据。而快速恢复不以时间为标度,触发条件是接收到了三个相同的ACK。......
  • HTTPS基础
    一、https基础:HTTP的缺点:通信使用明文,内容可能会被窃听不验证通信方的身份,有可能遭遇伪装无法证明报文的完整性,有可能信息已遭篡改HTTPS=HTTP+加密+认证+完整性保护HTTPS(全称:HyperTextTransferProtocoloverSecureSocketLayer),是以安全为目标的HTTP通道,在HTTP的基础......
  • wireshark https 抓包
    概述网上wireshark监听https的教程非常少,基本都是转载的同一篇,并且我实践后并不好使,没有办法,只能自己钻研。在了解了wireshark的基本用法后,终于解决了这个问题。注意,由于https是加密的,所以,虽然可以抓取到数据包,但是是密文。解决办法https的端口号是443,所以我们监听这个端口号,并且只......
  • https 原理分析进阶-模拟https通信过程
    大家好,我是蓝胖子,之前出过一篇https的原理分析,完整的介绍了https概念以及通信过程,今天我们就来比较完整的模拟实现https通信的过程,通过这篇文章,你能了解到https核心的概念以及原理,https证书是如何申请的,以及如何用golang实现https通信,https双向认证。本章代码已经上传到github......
  • 接口测试(2)--HTTP协议,HTTPS协议
    HTTP协议:是超文本传输协议,它主要规定了在互联网中传输数据时的标准。主要用于定义客户端与web端服务器通讯的格式。HTTP协议工作于客户端-服务端上。浏览器作为HTTP客户端,通过URL向,HTTP服务端即WEB服务器,发送所有请求。HTTP特点:支持客户端/服务器模式,简单快速,灵活,无连接,无......
  • tcp_bbr 代码分析
     brr算法流程:bbr算是一个完全独立的拥塞算法,具有自己的拥塞状态机.tcp_cong_control函数已经被bbr_main函数接管了 staticvoidtcp_cong_control(structsock*sk,u32ack,u32acked_sacked,intflag,conststructrate_sample*rs){conststr......
  • TCP相关知识
    1、TCP可靠传输是怎么实现的?TCP(TransmissionControlProtocol,传输控制协议)是一种面向连接的、可靠的传输协议。在TCP中,可靠传输是通过以下几种机制来实现的:序列号和确认应答机制:在TCP通信过程中,每个数据包都有一个唯一的序列号。接收方通过确认应答机制来告诉发送方已经正......
  • TCP连接中CLOSE_WAIT状态的原因与解决方法?
        关闭socket分为主动关闭和被动关闭两种情况。前者是指有本地主机主动发起的关闭;而后者则是指本地主机检测到远程主机发起关闭之后,作出回应,从而关闭整个连接;将关闭部分的状态转移摘出来,就得到了下图: 产生原因?通过图上,我们来分析,什么情况下,连接处于CLOSE_WAIT状......
  • Modbus RTU 转 Modbus TCP协议转换网关
    现今,工业自动化系统中,西门子和欧姆龙PLC是最常用的控制器之一。然而,由于PLC之间使用的通信协议不尽相同,因此需要一种能够实现多种协议转换的采集网关产品。BL110采集网关就是一款能够支持西门子和欧姆龙PLC远程数据上云平台的产品。BL110采集网关采用嵌入式Linux系统开发,具有高度的......