FastGateway:一个可以用于代替 Nginx 的网关
在我本人研究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_PASSWORD
,HTTPS_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=dd666666
, host
是在集群中的集群端点的域名,这个域名就是定义到我们的隧道客户端的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
效果图

低调大师中文资讯倾力打造互联网数据资讯、行业资源、电子商务、移动互联网、网络营销平台。
持续更新报道IT业界、互联网、市场资讯、驱动更新,是最及时权威的产业资讯及硬件资讯报道平台。
转载内容版权归作者及来源网站所有,本站原创内容转载请注明来源。
- 上一篇
扎克伯格解释 Meta 为什么要开源其 AI 技术
在今天的2023 年第四季度财报电话会议中,马克 - 扎克伯格解释 Meta 为什么要开源其 AI 技术。 Meta开源其 AI 技术是出于推动技术创新、提升模型质量、建立行业标准、吸引人才、增加透明度和支持其长期战略的考虑。这不仅有助于 Meta 在竞争激烈的 AI 领域保持领先地位,也有助于推动整个行业的前进。 1. 促进行业创新: 通过开源AI模型,Meta可以鼓励全球的开发者、研究人员和公司利用这些技术进行创新。这种共享精神有助于加速AI技术的进步,并推动新应用和服务的开发。 2. 提高模型质量: 开源允许更广泛的社区参与到模型的测试和改进中来。来自全球的贡献可以帮助发现并修复错误,提出改进意见,从而提高模型的性能和可靠性。 3. 建立行业标准: 通过将自己的技术开源,Meta有机会塑造行业标准和最佳实践。这种影响力可以确保Meta在AI领域的技术和方法得到广泛接受和使用,从而加强其市场地位。 4. 吸引和保留人才: 开源项目通常对研究人员和开发者具有吸引力。通过贡献于开放且受尊重的项目,Meta可以吸引顶尖人才加入,这对于维持其在AI领域的竞争优势至关重要。 5. 提升安全性...
- 下一篇
开源日报:中国首个脑机接口开源软件平台;谨慎升级 VS Code
欢迎阅读 OSCHINA 编辑部出品的开源日报,每天更新一期。 # 2024.2.2 今日要点 OpenSource Daily 天津大学发布中国首个脑机接口开源软件平台 MetaBCI 研究成果 近日,天津大学神经工程团队在数学与计算生物学领域 SCI 一区 TOP 期刊《Computers in Biology and Medicine》上发表论文,介绍了中国首个脑机接口开源软件平台 MetaBCI 的技术架构与实现方法。 MetaBCI 由离线分析模块 Brainda、刺激呈现模块 Brainstim 和在线数据流模块 Brainflow 三大部分构成,提供了面向 BCI 软件层面全链条开发的解决方案。 面向离线分析需求,Brainda 统一了现有公开数据集接口,优化了脑电数据读取、处理流程,复现多种主要 BCI 数据分析及解码算法,以此提高研究者的算法开发效率; 面向刺激呈现需求,Brainstim 提供了简洁高效的范式设计模块,可快速创建脑机接口范式刺激界面; 面向在线开发需求,Brainflow 利用双线程、双进程编程方法实现了实时高速的数据读取、数据处理、结果反馈等功能,...
相关文章
文章评论
共有0条评论来说两句吧...
文章二维码
点击排行
推荐阅读
最新文章
- Windows10,CentOS7,CentOS8安装MongoDB4.0.16
- CentOS7,CentOS8安装Elasticsearch6.8.6
- Docker使用Oracle官方镜像安装(12C,18C,19C)
- Mario游戏-低调大师作品
- CentOS8编译安装MySQL8.0.19
- SpringBoot2配置默认Tomcat设置,开启更多高级功能
- CentOS7,8上快速安装Gitea,搭建Git服务器
- SpringBoot2编写第一个Controller,响应你的http请求并返回结果
- Docker安装Oracle12C,快速搭建Oracle学习环境
- CentOS6,7,8上安装Nginx,支持https2.0的开启