为VKProxy编写UI配置站点和文档,有哪些可以优化?
摘要:VKProxy 是使用c#开发的基于 Kestrel 实现 L4L7的代理 有兴趣的同学点个赞呗 目前已经在写文档了, 文档在 https:fs7744.github.ioVKProxy.Docdocsintroduction.
VKProxy 是使用c#开发的基于 Kestrel 实现 L4/L7的代理
有兴趣的同学点个赞呗
目前已经在写文档了, 文档在 https://fs7744.github.io/VKProxy.Doc/docs/introduction.html (未完成全部)
UI配置站点也在开发ing了,会基于 etcd 作为配置源,主要考虑配置文件分发会导致大家在部署多实例场景有难度
docker 会在 UI配置站点 完成后再完善到文档
这里列举一下基本的配置
安装
自行构建
VKProxy 有很多扩展点可以定制化大家所需特制化需求,所以有相关需求时推荐自行构建
创建一个项目,然后选取所需package安装
dotnet add package VKProxy
dotnet add package VKProxy.Storages.Etcd
配置程序
using Microsoft.Extensions.Hosting;
using ProxyDemo;
var app = Host.CreateDefaultBuilder(args)
.UseReverseProxy()
.ConfigureServices(i =>
{
// 默认加载appsettings.json 配置
// 如需采用 etcd 作为配置源,请设置环境变量`ETCD_CONNECTION_STRING`并使用如下代码
// i.UseEtcdConfigFromEnv();
})
.Build();
await app.RunAsync();
配置代理
假如使用 appsettings.json 进行配置, 这里列举一个http1的代理配置
(配置项很多,可参考后续具体配置项说明, 也可以考虑使用 UI配置站点)
{
"ReverseProxy": {
// 监听端口 127.0.0.1:5001
"Listen": {
"http": {
"Protocols": [
"Http1"
],
"Address": [
"127.0.0.1:5001"
]
}
},
// 设置路由匹配任意 com 结尾的host,以及 url开头为 /ws 并且 method 为 GET的请求
"Routes": {
"HTTPTEST": {
"Match": {
"Hosts": [
"*com"
],
"Paths": [
"/ws*"
],
"Statement": "Method = 'GET'"
},
"ClusterId": "apidemo",
"Timeout": "00:10:11"
}
},
// 配置匹配请求转发到对应目标地址,并且通过主动健康检查保证服务稳定
"Clusters": {
"apidemo": {
"LoadBalancingPolicy": "RoundRobin",
"HealthCheck": {
"Active": {
"Enable": true,
"Policy": "Http",
"Path": "/test",
"Query": "?a=d",
"Method": "post"
}
},
"Destinations": [
{
"Address": "http://127.0.0.1:1104"
},
{
"Address": "https://google.com"
}
]
}
}
}
}
不同监听场景如何配置
[!WARNING]
虽然可以在运行时动态变更监听,但是目前Kestrel在终止监听时会等待已有连接结束,以降低对用户影响,达到优雅关闭的效果
所以在动态变更时不一
