比Nginx更好用的Gateway!
比Nginx更好用的Gateway!
Token新开源Gateway,使用yarp实现的一个反向代理,支持界面操作动态添加集群添加路由绑定,并且支持动态添加域名绑定https证书,超强yarp+FreeSql+MiniApis纯原生接口实现。
功能亮点
- 在线配置域名证书:实时生效,无需重启服务。
- 集群和路由的在线配置:动态添加和修改即时生效。
- 日志面板:默认提供,方便监控。
- 扩展性:简单的功能实现,便于根据业务需求进行扩展。
- 使用国产
ORM FreeSql性能非常的强并且支持AOT - 使用最新的
MiniApis的方式提供接口管理 - 新功能逐渐实现中!
项目技术栈
- .NET 8
- FreeSql
- Yarp(微软开源的代理SDK)
- React(前端框架)
- Semi UI框架
快速上手
下面讲解以下简单使用,我们将使用 docker-compose作为我们的容器执行环境,默认是存在docker-compose环境。
创建一个docker-compose.yml文件,使用了一个复杂的compose简化了我们的操作。
解析参数:
由于打包的镜像默认是不使用https的我们需要通过环境变量将我们的https使用起来,添加了俩个参数http://*:8080;https://*:8081,USER和PASS设置我们系统的默认的账号密码,如果不设置的账号密码则账号:root 密码:Aa010426.,然后使用映射将我们的数据持久化,默认的db文件会防止在/data目录下,将目录持久化即可。
gateway-web是界面的镜像,由于gateway-api默认是不携带界面的只提供基础接口功能,所以我们需要使用gateway-web的提供界面操作的功能,请注意在gateway-web镜像必须设置api_url环境变量,这个是设置我们的gateway-api的外网访问地址。
services:
gateway-api:
image: registry.cn-shenzhen.aliyuncs.com/tokengo/gateway-api
restart: always
environment:
ASPNETCORE_URLS: http://*:8080;https://*:8081
USER: root
PASS: Aa010426.
ports:
- 8200:8080
- 8300:8081
volumes:
- ./data:/data/
gateway-web:
image: registry.cn-shenzhen.aliyuncs.com/tokengo/gateway-web
restart: always
privileged: true
environment:
api_url: http://token-ai.cn:8200
ports:
- 10800:80
上面是docker-compose文件,下面提供docker run的指令
docker run -d --restart always \
--name gateway-api \
-e ASPNETCORE_URLS=http://*:8080;https://*:8081 \
-e USER=root \
-e PASS=Aa010426. \
-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 \
-e api_url=http://token-ai.cn:8200 \
-p 10800:80 \
registry.cn-shenzhen.aliyuncs.com/tokengo/gateway-web
界面体验
默认打开访问地址是会跳转到登录界面的,在执行docker容器的时候就需要设置我们的初始账号密码,如果并没有设置也不需要担心,使用默认账号密码即可,

打开了登录界面我们使用账号密码登录进去,进入首页会显示一个日志记录面板,提供了几个基础的模块,在后面也会根据需要定制这个界面显示的图表,下面我们打开我们的代理设置:

代理设置

默认的访问并没有提供任何数据,在这里我们可以按照顺序来添加我们的数据,点击右边的添加集群,然后输出我们的集群名称,集群描述可不输入,但是我们需要添加至少一个我们的集群节点,这个节点其实就是我们需要代理的地址了,比如我们需要将内网的Gitea代理出来,就将我们的Gitea的地址填入到集群端点,如果使用了ip可能需要使用域名则输入集群host即可,然后点击添加即可,添加完成以后就打开我们的路由。

路由跟集群也是一样的默认是没有数据,我们点击我们的添加路由,

然后我们将路由的名称和路由描述填上,然后在这里的路由需要选择一个集群,这个集群就是在前面我们添加的集群,还有一个路由匹配,这个路由匹配的规则是yarp定义的格则,默认使用{**catch-all}拦截全部,也可以/api/{**catch-all}这样就可以拦截/api后面所有地址,如果你需要指定一个域名匹配这个路由则添加路由匹配域名,这个是支持多个域名的,输入您的域名然后回车则可以输出下一个域名,完成以后我们添加提交,则完成了添加。

当我们添加了我们的路由我们还可以为我们写的域名提供https证书。
我们打开证书管理,当然在这里初始的时候也是没有数据的也需要用户手动添加自己的数据进去,点击我们的添加证书。

然后输出证书名称,证书描述,还有证书绑定的域名请注意这个是绝对匹配的域名默认是不区分大小写,由于我们使用的是pfx格式(当前版本仅支持pfx)还需要输入上传的证书的密码,然后我们上传我们的证书。

上面我们操作完成了以后不会立马生效,我们需要点击右上角的刷新缓存则路由会立马生效。

上面点击完成刷新成功,我们试试看访问是否能正常使用证书,然后我们访问了我们代理的地址以后发现并没有报证书错误。

通过上面的步骤我们了解了基本的Gateway的使用,由于时间仓猝我们的功能和界面是非常的简陋后续我会规划Gateway的功能,或你有什么建立可以提issue给我们,如果建议不错我们也可以考虑加入到Gateway当中。
结尾
来自token的Gateway分享
技术交流群:737776595
开源地址
比Nginx更好用的Gateway!的更多相关文章
- 比NGINX更快:nginx-1.15.5 vs mongols-1.2.3
nginx是多进程web服务器的优秀代表. 本文要用mongols-1.2.3实现一个比nginx更快的多进程的web服务器. mongols是C++ 服务器基础设施库, 它的主要特性如下: tcp ...
- 使用xhprof会在nginx下报502 Bad Gateway错误
使用xhprof会在nginx下报502 Bad Gateway错误 xhprof_enable()xhprof_enable(XHPROF_FLAGS_CPU + XHPROF_FLAGS_MEMO ...
- CentOS 7 + nginx + uwsgi + web2py (502 bad gateway nginx)
Web2py开发包中自带的setup-web2py-nginx-uwsgi-centos64.sh脚本, 只能运行在CentOS 6.4中使用, 如果直接在CentOS 7 中使用该脚本布署后, 访问 ...
- API Gateway性能比较:NGINX vs. ZUUL vs.Cloud Gateway vs. Linkerd[译]
2018-03-04 15:07 联发科的反思 前几天拜读了 OpsGenie 公司(一家致力于 Dev & Ops 的公司)的资深工程师 Turgay elik 博士写的一篇文章(链接在 ...
- Nginx错误提示:504 Gateway Time-out解决方法
朋友说504 Gateway Time-out的错误提示与nginx本身是没有任何关系的我们可以通过fastcgi配置参数的调整进行解 决. 修改 php-fpm 配置文件: 1.把 max_chil ...
- nginx 反向代理 502 Bad Gateway
查看nginx的error.log日志文件发现如下信息: upstream sent too big header while reading response header from upstrea ...
- 基于nginx与zookeeper的API Gateway实现笔记 - 环境搭建
为了简化操作,采用操作系统为CentOS 8. 首先需要编译出libzookeeper,在官网下载最新的zookeeper源码,或者github上clone一个,地址为:https://github. ...
- nginx 504 Gateway Time-out错误解决办法
我们经常会发现大量的nginx服务器访问时会提示nginx 504 Gateway Time-out错误了,下面我来总结了一些解决办法,有需要了解的同学可进入参考. 一般看来, 这种情况可能是由于ng ...
- nginx 502 Bad Gateway 错误问题收集
nginx 502 Bad Gateway 错误问题收集 (2010-11-18 13:51:37) 转载▼ 标签: 杂谈 分类: 工作 nginx 502 Bad Gateway 错误问题收集 因为 ...
- nginx 502 Bad Gateway 错误解决办法
nginx出现502有很多原因,但大部分原因可以归结为资源数量不够用,也就是说后端PHP-fpm处理有问题,nginx将正确的客户端请求发给了后端的php-fpm进程,但是因为php-fpm进程的问题 ...
随机推荐
- 异常:Caused by: org.apache.ibatis.binding.BindingException: Invalid bound statement (not found): com.qbb.srb.core.mapper.DictMapper.batchInsert
程序报错:Caused by: org.apache.ibatis.binding.BindingException: Invalid bound statement (not found): com ...
- pytest+allure+jenkins+python+git,实现Linux服务器看测试报告,并发送邮件通知
1.简介 pytest:一种单元测试框架,与python自带的unittest测试框架类似,但是比unittest框架使用起来更简洁,效率更高. allure:是开源测试报告框架. jenkins:持 ...
- Ubuntu图形界面root登录“sorry, that didn't work please
https://blog.51cto.com/u_14757092/2484490 ssh登录主机执行下vim /etc/pam.d/gdm-autologin 注释行 "auth requ ...
- Visual Studio 2022版本17.8中的实用功能
前言 今天介绍一下Visual Studio 2022版本17.8这一发行版中的4个比较实用功能. 保留大小写查找和替换 这个功能之前就有,不过我觉得对于日常搜索.替换而言还是比较实用的.在执行查找. ...
- Picker 选择器
WXML 文件中 <view class="container"> <view> <text>选择器的值: {{pickerValue}}< ...
- 这项评测,华为云GaussDB(for MySQL)顺利通过
摘要:近日,中国信息通信研究院(简称"中国信通院")公布了第十五批"可信数据库"评测结果.华为云GaussDB(for MySQL)凭借过硬的技术实力顺利通过& ...
- 什么是CodeArts?
摘要:一站式.全流程.安全可信的软件开发生产线. 软件开发生产线(CodeArts)原名"软件开发平台(DevCloud)"是集华为近30年研发实践.前沿研发理念.先进研发工具为一 ...
- 经典永流传,华为云媒体 AI 让老电影焕发新生
摘要:近日,在华为云TechWave全球技术峰会(人工智能&数据)上,马栏山视频文创产业园首席专家周苏岳受邀发表演讲<经典永流传,媒体 AI 让老电影焕发新生>,分享与华为云原生媒 ...
- 云小课|打造企业数据“高内聚,低耦合”--试试GaussDB(DWS)逻辑集群,实现数据物理隔离
阅识风云是华为云信息大咖,擅长将复杂信息多元化呈现,其出品的一张图(云图说).深入浅出的博文(云小课)或短视频(云视厅)总有一款能让您快速上手华为云.更多精彩内容请单击此处. 摘要:逻辑集群是基于No ...
- 万字保姆级长文——Linkedin元数据管理平台Datahub离线安装指南
元数据管理平台Datahub最近的热度越来越高.已经更新到了0.8.40的版本,来咨询我的小伙伴也越来越多,特别是安装过程有很多问题. 考虑到有些企业部分数据服务是部署在内网的,那么离线安装D ...