1.nginx Դ??github
2.用Ngrok实现内网穿透
3.通过 js 或者 nginx 实现域名重定向
4.nginx本地反代github
5.18. 从零开始编写一个类nginx工具, 主动式健康检查源码实现
6.又一款国产 Web 防火墙工具,开源了!
nginx Դ??github
介绍了一款名为wmproxy的类nginx工具,由Rust语言编写,功能包括/tickbh/wmproxy和github上:github: /tickbh/wmproxy。 配置数据通常存储在配置文件中,h站视频源码当需要变更时,更新配置文件,程序会自动重新加载。与nginx的配置重载不同,wmproxy通过监听本地端口(如.0.0.1:)实现数据的热更新,这种方式安全且实时,可以查看内存中的实时配置。 为了支持不同平台,采用了条件编译的原理,通过封装函数实现无缝切换。测试功能包括:首先绑定端口,然后使用HTTP请求发送reload指令到.0.0.1:/reload,确认配置成功更新。停止功能通过stop指令验证进程是否正确关闭。 源码中,控制终端接收HTTP指令,并通过Sender/Receiver进行数据同步。获取具体源码公式启动流程和消息处理机制都被详细设计,便于灵活管理。这个wmproxy的配置热更新方法提供了更灵活的系统保护。用Ngrok实现内网穿透
Ngrok简介:
Ngrok是用于内网穿透的开源软件,它的1.x版本存在内存泄漏问题,从2.x版本开始转向闭源。其工作原理是:服务器端运行于拥有公网IP的服务器上,监听/inconshrevea...
2. 外网服务器:配备公网IP的服务器,需设置子域名(A、CNAME)。
3. 内网客户端:可以是虚拟机,本文以Ubuntu .为例。
准备编译环境:
1. 安装go:使用命令`sudo apt install golang`。
2. 安装git:通过命令`sudo apt install git`实现。
3. 生成自签名证书:执行`cd ngrok`至项目目录,设置服务器域名`NGROK_DOMAIN="ngrok.abc.com"`。然后依次运行`openssl genrsa -out rootCA.key `、`openssl req -x -new -nodes -key rootCA.key -subj "/CN=$NGROK_DOMAIN" -days -out rootCA.pem`、`openssl genrsa -out device.key `、`openssl req -new -key device.key -subj "/CN=$NGROK_DOMAIN" -out device.csr`、`openssl x -req -in device.csr -CA rootCA.pem -CAkey rootCA.key -CAcreateserial -out device.crt -days `。
4. 将证书复制到指定文件夹:`cp rootCA.pem ../assets/client/tls/ngrokroot.crt`、dnf源码如何修改`cp device.crt ../assets/server/tls/snakeoil.crt`、`cp device.key ../assets/server/tls/snakeoil.key`。
编译服务器和客户端:
1. 服务器编译:在Linux系统中,使用命令`GOOS=linux GOARCH= make release-server`(位)或`GOOS=linux GOARCH=amd make release-server`(位),针对Mac OS和Windows系统,分别使用相应命令进行编译。
2. 客户端编译:根据系统类型,执行`GOOS=linux GOARCH= make release-client`(位)或`GOOS=linux GOARCH=amd make release-client`(位),同样包括Mac OS和Windows系统。
编译完成后,服务器和客户端程序将被生成在bin文件夹中。
运行服务器:
将`ngrokd`程序复制至服务器指定目录,若端口被占用可更改端口号,并确保开启防火墙并打开端口允许外网访问。具体操作参考相关文章。
开启服务器命令:`./ngrokd -domain="ngrok.abc.com" -`即可转发至`ngrok.abc.com:`。
通过 js 或者 nginx 实现域名重定向
为了将未备案的大学域名 windliang.cc 重定向到已备案的 windliang.wang,可以采用前端JavaScript或后端Nginx两种方法。
使用JavaScript实现重定向较为简单,只需在GitHub的pages服务中创建一个index.html文件。文件内容主要包含将浏览器自动跳转至windliang.wang的代码。将该文件上传至GitHub仓库,eclipsef3源码并在设置中开启pages服务,绑定域名。同时,在DNS中添加CNAME记录,指向windliang.github.io。如此操作后,通过访问windliang.cc即可自动跳转至windliang.wang。
另一种方法是利用Nginx的配置文件实现HTTP重定向。在服务器的/etc/nginx/conf.d目录下创建一个新文件,并添加相应的配置代码。配置文件中包含将访问windliang.cc的请求重定向至windliang.wang的指令。不过,此方法仅适用于HTTP连接,对于HTTPS连接无效。因此,还需要为windliang.cc申请SSL证书,以实现HTTPS的跳转。
SSL证书可以通过Let's Encrypt服务获得,Certbot是一个可自动获取证书的工具,适合手动管理网站使用HTTPS。通过Certbot官网选择后端软件和操作系统,它将指导用户完成证书获取过程。源码设计电脑配置之后,根据步骤安装Certbot,设置邮箱,选择域名,生成证书。完成证书配置后,服务器将显示状态码,表示重定向成功。需要注意的是,Let's Encrypt证书有效期为3个月,但通过特定流程,证书到期前会自动更新。
实现域名重定向的过程看似直接,但在实践过程中却可能遇到多种问题,例如对/tickbh/wmproxy
github: /tickbh/wmproxy
为什么我们需要主动式健康检查?主动式健康检查可以帮助我们更好地掌握系统的稳定性。例如,如果我们有一条连接不可达,连接超时设定为5秒,需要检测失败3次才认定为失败,那么从开始检测到判定失败需要秒。
如果我们的系统是高并发的,每秒的QPS为,有3个地址需要检测,那么有1/3的失败概率。在秒内,我们会收到个请求,其中个请求会失败,如果这些是重要的数据,我们可能会丢失很多重要数据。
如果客户端有重试机制,那么在失败时客户端会进行重试,系统可能会反复分配请求到不可达的系统,这可能导致短时间内请求激增,可能引发系统的雪崩。
因此,主动了解目标端系统的稳定性至关重要。
以下是没有主动健康检查的情况:
当出现错误时,一个请求的平均时长可能会达到(1.4s + 5s) / 2 = (3.2s),比正常访问多了(3.2 - 1.4) = 1.8s,节点的宕机会对系统的稳定性产生较大的影响。
以下是主动健康检查的情况,它保证了访问后端服务器组都是正常状态。
当服务器2出现问题时,主动检查已经检测出服务器2不可用,负载均衡时会选择已将服务器2摘除,因此系统的平均耗时为1.4s,系统依然保持稳定。
健康检查的种类可以分为以下两类:
在目前的系统中,我们需要从配置中读出所有需要健康检查的类型,即需要去重,把同一个指向的地址过滤掉。配置可能被重新加载,所以我们需要预留发送配置的方式(或者后续类似nginx用新开进程的方式则不需要),此处做一个预留。
部分实现源码定义在check/active.rs中,主要定义了两个类。我们在配置时获取所有需要主动检查的数据。
主要的检查源码,所有的最终信息都落在HealthCheck的静态变量里:
结语:主动检查可以及时地更早发现系统中不稳定因素,是系统稳定性的基石。它还可以通过更早发现因素来通知运维介入,我们的目标是使系统更稳定、更健壮,处理延时更少。
又一款国产 Web 防火墙工具,开源了!
雷池 WAF
雷池是一款简单易用的社区 WAF 项目,它以 Nginx 为底层,作为反向代理接入网络,用来清洗黑客的恶意流量,保护网站免受攻击。项目由长亭科技维护,他们在 GitHub 上还维护了多个知名安全开源项目。雷池自今年四月发布以来,更新迅速,四个月时间发布了 个版本,被 + 网站站长使用,并在 GitHub 上获得 3k+ 的 star。
安装与部署
雷池采用容器化部署,服务由多个 Docker 容器组成。作者提供了方便的安装脚本,只需服务器能联网,即可自动拉取镜像、初始化配置文件并启动服务。安装过程简单快捷,只需执行仓库中的 setup.sh 脚本,或使用在线安装脚本。安装完成后,通过访问本地的 Web 服务端口即可开始使用。
工作原理
雷池以反向代理方式接入,优先接收流量并进行检测和清洗,将清洗过的流量转发至网站服务器,确保外部攻击流量无法触达服务器。通过这种方式,雷池能够有效防止黑客攻击。
核心能力
雷池具备防护 Web 攻击、CC 攻击和爬虫的能力。其 Web 攻击检测能力基于语义分析算法,自动机引擎 yanshi 支持对片段语法分析、请求参数自动化递归解码,识别攻击片段并判定恶意攻击。此外,雷池集成了多种人机验证算法,包括恶意 IP 情报、客户端指纹和访问频率限制,用于对抗爬虫、CC 攻击和扫描。
流量访问控制与资源识别
雷池支持通过可视化页面配置访问控制黑白名单,允许设置源 IP、路径、域名、Header 和 Body 等条件。同时,它能够基于 HTTP 流量自动识别 Web 资源,生成 API 画像进行统计和分析,精准识别异常访问行为,检测出正常操作下的异常流量。
项目特性
雷池安装便捷,使用简单,无需复杂的背景知识即可发挥顶级安全防护效果。其安全防护能力强,基于语义分析的 Web 攻击检测算法在安全行业享有高度认可。此外,它还具备 IP 威胁情报、动态限频、智能建模等高级防护能力。雷池具有高性能和高稳定性的特点,轻松支撑 + TPS 流量,且攻击检测带来的延迟极低,仅为 1 毫秒。
GitHub 仓库:github.com/chaitin/safe...
2024-12-22 11:34
2024-12-22 11:24
2024-12-22 10:34
2024-12-22 10:09
2024-12-22 09:21
2024-12-22 09:14