首页 > 系统相关 >FastGateway 一个可以用于代替Nginx的网关

FastGateway 一个可以用于代替Nginx的网关

时间:2024-02-03 12:22:05浏览次数:34  
标签:web 网关 com FastGateway Nginx api HTTPS 8000 gateway

在我本人研究Yarp的时候经常用于公司项目的业务网关代理,这时候就个大佬问我是否可以实现动态加载HTTPS证书?那时候我说不太可能实现,然而在某一天我看到

微软使用Yarp代替了Nginx吞吐量提升了百分之八十!

这个时候我就萌生了自己使用yarp造一个Gateway的项目,应为我本身也经常使用nginx作为网关,但是nginx的使用总得写conf,然后重启我的nginx,并且还需要配置证书重启,我就在想是否可以实现界面管理,并且完全动态管理?

然后我们的FastGateway项目就诞生了,下面我们介绍一下我们的FastGateway的项目简单案例

FastGateway

我们的FastGateway提供了俩个容器,一个是代理服务,一个是前端服务

一般简单使用就可以直接使用我们的docker-compose构建,非常简单

FastGateway支持哪些功能?

  • 登录授权

    • 通过环境变量简单设置账号密码
  • 动态路由管理

    • 完全界面操作并且实时更新
  • 动态配置证书管理

    • 完全界面操作并且实时更新
  • dashboard监控

    • 提供了简单数据监控,后续还会提供更完善的功能
  • 静态文件服务代理

    • 使用中间件简单实现了静态文件代理(Yarp默认是不支持静态文件代理)
  • 穿透隧道功能

    • 只需要提供一个公网的Gateway服务端,然后下载我们的Gateway的客户端就可以将客户端的局域网的服务映射到外网(只支持http协议的服务)
  • 出入口流量监控

    • 基于Kestrel实现出入口流量监控,还提供当前服务器的所有网卡的出入流量实时监控

技术栈

后端技术栈

  • Asp.Net 8.0 用于提供基础服务
  • Yarp 用于提供反向代理服务
  • FreeSql 用于提供数据库服务
  • JWT 用于提供登录授权服务
  • MiniApis 提供WebApi服务

前端技术栈

  • reset-css 用于重置浏览器默认样式
  • axios 用于发送http请求
  • semi 用于提供基础组件
  • react-router-dom 用于路由管理

镜像执行指令

mkdir data
docker run -d --restart always --name gateway-api -p 8000:8000 -p 8200:8080 -p 8300:8081 -v $(pwd)/data:/data/ registry.cn-shenzhen.aliyuncs.com/tokengo/gateway-api
docker run -d --restart always --privileged --name gateway-web -p 10800:80 -e api_url=http://localhost:8000 registry.cn-shenzhen.aliyuncs.com/tokengo/gateway-web

Docker-Compose文件

services:
  gateway-api:
    image: registry.cn-shenzhen.aliyuncs.com/tokengo/gateway-api
    restart: always
    container_name: gateway-api
    environment:
      USER: root
      PASS: Aa010426.
    ports:
      - 8000:8000 # 提供给web端调用的管理接口
      - 8200:8080 # Http代理端口
      - 8300:8081 # Https代理端口
    volumes:
      - ./data:/data/ # 请注意手动创建data目录,负责在Linux下可能出现权限问题导致无法写入

  gateway-web:
    image: registry.cn-shenzhen.aliyuncs.com/tokengo/gateway-web
    restart: always
    build:
      context: ../web
      dockerfile: Dockerfile
    privileged: true
    environment:
      api_url: http://localhost:8000
    ports:
      - 10800:80

如果并没有提供账号密码则默认

账号:root

密码:Aa010426.

替换默认的https证书

由于需要使用https,为了方便系统默认提供了一个pfx证书,如果你需要提供的话可以按照以下操作进行,如果是Docker执行的话证书的目录则是 /app/certificates/gateway.pfx

services:
  gateway-api:
    image: registry.cn-shenzhen.aliyuncs.com/tokengo/gateway-api
    restart: always
    container_name: gateway-api
    ports:
      - 8000:8000 # 提供给web端调用的管理接口
      - 8200:8080 # Http代理端口
      - 8300:8081 # Https代理端口
    environment:
      USER: root
      PASS: Aa010426.
      HTTPS_PASSWORD: dd666666
      HTTPS_FILE: gateway.pfx
    ports:
      - 8200:8080
    volumes:
      - ./data:/data/
      - ./app/certificates:/app/certificates

  gateway-web:
    image: registry.cn-shenzhen.aliyuncs.com/tokengo/gateway-web
    restart: always
    container_name: gateway-web
    privileged: true
    environment:
      api_url: http://localhost:8000
    ports:
      - 10800:80

参考上面的docker-compose文件,我们提供了俩个环境变量HTTPS_PASSWORDHTTPS_FILE

HTTPS_FILE

  • 在系统中已经指定了容器的/app/certificates目录,你只想要挂在目录中的文件名即可

HTTPS_PASSWORD

  • Pfx证书的密码,如果修改了证书请填写证书的密码。

/app/certificates

  • 这个是系统证书默认存放目录,如果映射了目录则需要提供自己的证书。

使用隧道

services:
  gateway-api:
    image: registry.cn-shenzhen.aliyuncs.com/tokengo/gateway-api
    restart: always
    container_name: gateway-api
    environment:
      USER: root
      PASS: Aa010426.
      HTTPS_PASSWORD: dd666666
      TUNNEL_PASSWORD: dd666666
      HTTPS_FILE: gateway.pfx
    ports:
      - 8000:8000 # 提供给web端调用的管理接口
      - 8200:8080 # Http代理端口
      - 8300:8081 # Https代理端口
    volumes:
      - ./data:/data/
      - ./app/certificates:/app/certificates

  gateway-web:
    image: registry.cn-shenzhen.aliyuncs.com/tokengo/gateway-web
    restart: always
    container_name: gateway-web
    privileged: true
    environment:
      api_url: http://localhost:8000
    ports:
      - 10800:80

增加TUNNEL_PASSWORD环境变量,默认为空不设置密码

下载隧道客户端 https://gitee.com/hejiale010426/Gateway/releases 然后解压压缩包,打开appsettings.json文件修改Tunnel节点的Url,如果Gateway使用了TUNNEL_PASSWORD,那么你的URL应该是https://localhost:8081/api/gateway/connect-h2?host=backend1.app&password=dd666666host是在集群中的集群端点的域名,这个域名就是定义到我们的隧道客户端的host的这个参数,请保证值的唯一性,当绑定集群的路由匹配成功以后则会访问图片定义的端点,如果并没有存在节点那么他会直接代理。

出入流量监控

使用环境变量控制是否启用流量监控,使用环境变量ENABLE_FLOW_MONITORING设置我们是否启用流量监控,如果为空则默认启动流量监控,然后可以打开我们的控制面板查看流量监控的数据。

services:
  gateway-api:
    image: registry.cn-shenzhen.aliyuncs.com/tokengo/gateway-api
    restart: always
    container_name: gateway-api
    environment:
      USER: root
      PASS: Aa010426.
      HTTPS_PASSWORD: dd666666
      HTTPS_FILE: gateway.pfx
      ENABLE_FLOW_MONITORING: true
    ports:
      - 8000:8000 # 提供给web端调用的管理接口
      - 8200:8080 # Http代理端口
      - 8300:8081 # Https代理端口
    volumes:
      - ./data:/data/
      - ./app/certificates:/app/certificates

  gateway-web:
    image: registry.cn-shenzhen.aliyuncs.com/tokengo/gateway-web
    restart: always
    container_name: gateway-web
    privileged: true
    environment:
      api_url: http://localhost:8000
    ports:
      - 10800:80

效果图

开源地址:FastGateway: FastGateway 一个超级简单方便的网关,基于Kestrel+Yarp实现的网关。 支持动态配置路由,支持动态配置集群,支持动态配置HTTPS证书,无需重启即可使用。 (gitee.com)

标签:web,网关,com,FastGateway,Nginx,api,HTTPS,8000,gateway
From: https://www.cnblogs.com/hejiale010426/p/18004526

相关文章

  • nginx的安装windows
    参考网站:nginxforWindows1.下载https://nginx.org/en/download.html最新版本,nginx-1.25.3,解压到当前文件夹2.启动,停止nginx启动:D:\nginx\nginx-1.25.3>startnginx.exe查看nginx的启动进程:D:\nginx\nginx-1.25.3>tasklist/fi"imagenameeqnginx.exe"映像名称......
  • 智能分析网关V4+EasyCVR视频融合平台——高速公路交通情况的实时监控和分析一体化方案
    随着2024年春运帷幕的拉开,不少人的返乡之旅也即将开启,从这几日的新闻来看,高速上一路飘红。伴随恶劣天气,加上激增的车流,极易导致高速瘫痪,无法正常使用。为解决此问题,助力高速高效运营,TSINGSEE青犀智能分析网关V4+EasyCVR视频融合平台——高速公路一体化监控体系给出答案。1、视频......
  • nginx配置ssl证书
    ###1.下载证书选nginx,证书和秘钥文件。2.放置服务器上创建文件夹,可放在nginx的目录下。上传文件。mkdircertroot@hecs-139923:/etc/nginx/cert#lltotal16drwxr-xr-x2rootroot4096Feb209:15./drwxr-xr-x9rootroot4096Feb211:52../-rw-r--r--1roo......
  • 提升网站性能的秘诀:为什么Nginx是高效服务器的代名词?
    在这个信息爆炸的时代,每当你在浏览器中输入一个网址,背后都有一个强大的服务器在默默地工作。而在这些服务器中,有一个名字你可能听说过无数次——Nginx。今天,就让我们一起探索这个神奇的工具。一、Nginx是什么Nginx(发音为“enginex”)是一个开源的高性能HTTP和反向代理服务器。它由......
  • 【方案】TSINGSEE青犀智能分析网关V4+EasyCVR智慧服务区一体化监控平台
    随着年关将近,春运大潮已然开启,届时又伴随着大雨暴雪天气,高速路况的新闻层出不穷。由于长期驾车且高速拥堵严重,不少人就聚集在服务区休息,导致服务区流量爆满,空前的拥堵极易导致服务区瘫痪。如何利用智能监控系统对服务区进行高效管理,提升服务区的精细化服务和智能化管理需求?TSINGSE......
  • 工业智能网关的功能、特点以及应用-天拓四方
    工业智能网关作为实现设备间通信和数据采集的关键组件,正发挥着越来越重要的作用。工业智能网关能够实现设备间的实时通信、数据采集、协议转换和远程控制等功能,为工业自动化提供了更加高效、灵活和可靠的数据处理解决方案。本文将重点介绍工业智能网关的功能、特点以及应用案例。一......
  • Nginx-反向代理详解
    什么是NginxNginx是一个高性能的开源Web服务器和反向代理服务器。它具有轻量级、高并发、低内存消耗等特点,被广泛用于搭建静态资源服务器、负载均衡、反向代理等场景。本文介绍nginx的反向代理,其他内容敬请期待!什么是反向代理反向代理是一种代理服务器的配置模式,它代表服务器向......
  • 长连接网关技术专题(九):去哪儿网酒店高性能业务网关技术实践
    本文由去哪儿网技术团队田文琦分享,本文有修订和改动。1、引言本文针对去哪儿网酒店业务网关的吞吐率下降、响应时间上升等问题,进行全流程异步化、服务编排方案等措施,进行了高性能网关的技术优化实践。技术交流:-移动端IM开发入门文章:《新手入门一篇就够:从零开发移动端IM》......
  • 生成Nginx服务器SSL证书和客户端证书
    Nginx服务器SSL证书生成passkey下面的命令用于生成一个2048bit的passkey,-passoutpass:111111用于避免交互式输入密码12345[tomcat@a02tmp]$opensslgenrsa-aes256-passoutpass:111111-outserver.pass.key2048GeneratingRSAprivatekey,2048b......
  • [stable/nginx-ingress] [emerg] 46#46: bind() to 0.0.0.0:80 failed (13: Permissio
    该报错与nginx的报错是一样的,不同的是发生在kubernetes-ingress场景。使用NginxIngressController时,以Deployment的方式启动POD时会报错。使用的Deployment配置示例:https://github.com/nginxinc/kubernetes-ingress/blob/main/deployments/deployment/nginx-ingress.yaml这......