首页 文章 精选 留言 我的

精选列表

搜索[HCI软件],共10000篇文章
优秀的个人博客,低调大师

Pingap v0.2.0,基于 Pingora 的反向代理软件

Pingap是基于pingora开发的,基于Apache-2.0 license协议开源,源代码可查阅https://github.com/vicanso/pingap。pingora提供了各类模块便于rust开发者使用,但并不方便非rust开发者使用,因此pingap提供了以toml的形式配置简单易用的反向代理,实现支持多location代理转发,通过插件的形式支持更多的需求场景。特性如下: 支持多location配置,可通过请求的路径与域名筛选 支持HTTP1与HTTP2两种协议 无中断请求的配置更新,方便实时更新应用配置 模板式的请求日志输出,可按模板指定各种输出 提供Web界面式的配置,简化操作 支持各种插件形式,根据需要灵活配置各种特性:如静态文件目录、服务性能指标、WEB后台配置应用等 Location的处理逻辑 该Server下的所有location在初始化时根据权重按高至低排序,接受到请求时按顺序一个个匹配到符合的location为止,若无符合的则返回出错。在选择对应的location之后,判断是否有配置重写pathh(若无则不需要),添加请求头(若无则不需要),成功响应时添加响应头(若无则不需要)。 let header = session.req_header_mut(); let path = header.uri.path(); let host = header.uri.host().unwrap_or_default(); let (location_index, lo) = self .locations .iter() .enumerate() .find(|(_, item)| item.matched(host, path)) .ok_or_else(|| pingora::Error::new_str(LOCATION_NOT_FOUND))?; if let Some(mut new_path) = lo.rewrite(path) { if let Some(query) = header.uri.query() { new_path = format!("{new_path}?{query}"); } // TODO parse error let _ = new_path.parse::().map(|uri| header.set_uri(uri)); } Location主要配置请求的匹配、请求头响应头的插入,以及各种插件的关联,是整个流程中的最重要组成部分。下面是相关参数的详细说明: upstream: 配置该location对应的upstream,若该location所有的处理均由插件完成,则可不配置 host: 匹配的域名,如果是多个域名则使用,分隔 path: 匹配的路径,具体使用后续细说 proxy_headers: 转发至upstream时添加的请求头 headers: 响应至downstream时添加的响应头 rewrite: 请求路径的重写规则 proxy_plugins: 添加至该location的插件列表,按顺序执行 Location支持配置对应host(支持多个)与path规则,path支持以下的规则,权重由高至低: 全等模式,配置以=开始,如=/api表示匹配path等于/api的请求 正则模式,配置以~开始,如~^/(api|rest)表示匹配path以/api或/rest开始请求 前缀模式,如/api表示匹配path为/api开始的请求 空模式,若未指定path则表示所有的path均匹配,一般建议配置一个/的前缀模式即可,无需使用空模式 插件体系 Pingap中通过Locaton添加各种插件支持更多的应用场景,如鉴权、流控等。现在插件支持在request_filter与proxy_upstream_filter阶段执行,均为转发到上游节点前的处理。下面介绍一下proxy plunin的具体逻辑,trait如下: #[async_trait] pub trait ProxyPlugin: Sync + Send { fn category(&self) -> ProxyPluginCategory; fn step(&self) -> ProxyPluginStep; async fn handle(&self, _session: &mut Session, _ctx: &mut State) -> pingora::Result { Ok(false) } } 主要分三个实现: category: 插件类型,用于区分该插件是哪类形式的插件 step: 插件的执行阶段,现只支持在request_filter与proxy_upstream_filter阶段执行 handle: 插件的执行逻辑,若返回的是Ok(true),则表示请求已处理完成,不再转发到上游节点 Upstream的处理逻辑 Upstream的逻辑比较简单,在匹配location后,根据该location配置的upstream节点列表,按算法选择可用节点,并将请求转发至该节点即可。虽然注意,插件也可配置在proxy_upstream_filter转发至upstream之前执行,可按需配置对应的插件。 Upstream配置为节点地址列表,配置为域名则会根据解析后的IP添加所有节点地址(之后并不会再次刷新域名解析),需要注意节点会使用默认的tcp health check的形式检测节点是否可用,建议配置为http health chech。下面针对相关参数详细说明: addrs: 节点地址列表,地址为ip:port weight的形式,weight权重可不指定,默认为1 algo: 节点的选择算法,支持hash与round_robin两种形式,如hash:ip表示按ip hash选择节点。默认为round_robin sni: 若配置的是https,需要设置对应的SNI verify_cert: 若配置的是http,是否需要校验证书有效性 health_check: 节点健康检测配置,支持http与tcp形式 ipv4_only: 若配置为域名时,是否仅添加解析的ipv4节点 alpn: 在tls握手时,alpn的配置,默认为H1 connection_timeout: tcp连接超时,默认为无 total_connection_timeout: 连接超时,对于https包括tls握手部分,默认为无 read_timeout: 读取超时,默认为无 write_timeout: 写超时,默认为无 idle_timeout: 空闲超时,指定连接空闲多久后会自动回收,如果设置为0,则连接不复用,需要注意有些网络设备对于无数据的tcp连接会过期自动关闭,因此可根据需要设置对应的值。默认为无 WEB管理后台

优秀的个人博客,低调大师

FastCopy 5.4.3 发布,Windows 上最快的复制/备份软件

FastCopy 5.4.3 现已发布。这是一款 Windows 平台的免费文件复制工具,特点是速度快、不占用资源,尤其是在复制海量文件的场景下比 Windows 默认的文件复制功能快许多倍。如果有复制大量文件或备份文件的场景,这是一款非常实用的工具。 此版本的新增内容: 在文件菜单中添加了“Launch New FastCopy”项 修复了 move mode 中的一个罕见异常(启用 ACL/AltStream 时) 修复了 Win11 的 shell 扩展设置的罕见异常 v5 主要特点 新增 Perfect Verify。(仅 Pro 版) 支持 Win11 的 shell 扩展。 异步 I/O 算法的演变,以获得更高的速度。 由于特权时预先分配空间,在高速 SSD 环境下速度提高 20%-30%。 在主要命令中增加了"Verify"、"FC Verify Info Disp "和 "FC Verify Info Check(仅限 Pro 版)"。 支持 CPU affinity。 增加了总是并行运行的驱动器设置(如 SSD-RAID)。 下载地址:https://fastcopy.jp/

资源下载

更多资源
Mario

Mario

马里奥是站在游戏界顶峰的超人气多面角色。马里奥靠吃蘑菇成长,特征是大鼻子、头戴帽子、身穿背带裤,还留着胡子。与他的双胞胎兄弟路易基一起,长年担任任天堂的招牌角色。

腾讯云软件源

腾讯云软件源

为解决软件依赖安装时官方源访问速度慢的问题,腾讯云为一些软件搭建了缓存服务。您可以通过使用腾讯云软件源站来提升依赖包的安装速度。为了方便用户自由搭建服务架构,目前腾讯云软件源站支持公网访问和内网访问。

Nacos

Nacos

Nacos /nɑ:kəʊs/ 是 Dynamic Naming and Configuration Service 的首字母简称,一个易于构建 AI Agent 应用的动态服务发现、配置管理和AI智能体管理平台。Nacos 致力于帮助您发现、配置和管理微服务及AI智能体应用。Nacos 提供了一组简单易用的特性集,帮助您快速实现动态服务发现、服务配置、服务元数据、流量管理。Nacos 帮助您更敏捷和容易地构建、交付和管理微服务平台。

WebStorm

WebStorm

WebStorm 是jetbrains公司旗下一款JavaScript 开发工具。目前已经被广大中国JS开发者誉为“Web前端开发神器”、“最强大的HTML5编辑器”、“最智能的JavaScript IDE”等。与IntelliJ IDEA同源,继承了IntelliJ IDEA强大的JS部分的功能。

用户登录
用户注册