比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
開源地址
gitee.com
github.com
總結
以上是生活随笔為你收集整理的比Nginx更好用的Gateway!的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: 帮助编写异步代码的ESLint规则
- 下一篇: 多图详解Nginx