
【Nginx】
文章平均质量分 84
Nginx
小小工匠
show me the code ,change the world
展开
-
Web安全 - 使用 Nginx + Lua 防御 NoSQL 注入攻击
通过将 Lua 嵌入到 Nginx 中,我们可以在请求到达后端应用之前,对用户输入进行实时检测和过滤,从而有效防御 NoSQL 注入攻击。或其他处理块时,Nginx 会加载并执行指定路径的 Lua 文件,这样你可以用 Lua 脚本来完成诸如内容生成、响应修改、请求处理等操作。模块提供的一条指令,它允许 Nginx 在处理请求时,执行一个外部的 Lua 脚本文件。在 Nginx 配置文件中,添加 Lua 脚本的路径和共享内存区域,并配置 Lua 脚本处理请求。从描述中可以看出,这是一个典型的。原创 2024-12-31 19:10:00 · 3552 阅读 · 0 评论 -
Nginx - 整合lua 实现对POST请求的参数拦截校验(不使用Openresty)
一个不使用 OpenResty 的 Nginx 集成 Lua 脚本的方案,用于对 POST 请求参数进行校验。如果不使用 cjson 库,我们可以手动构造 JSON 字符串。这种方法虽然不如使用专门的 JSON 库灵活,但对于简单的情况来说是足够的。end-- 创建 JSON 字符串-- 设置响应头为 JSON-- 输出 JSON 响应endendreturn {几点说明:使用 Lua 的函数来构造 JSON 字符串。这种方法适用于简单的 JSON 结构。原创 2024-12-30 20:21:39 · 3400 阅读 · 0 评论 -
Nginx - 实现 TCP/DUP流量的按 IP 动态转发
动态转发到不同的后端服务器节点。此需求适用于场景如数据库代理(如 MySQL)、TCP 服务负载均衡、以及地域或来源IP分流的流量调度。为了优化网络性能和提升服务的可用性,我们需要在 Nginx 中配置。重新加载 Nginx 服务。原创 2024-10-18 20:15:00 · 5147 阅读 · 0 评论 -
Nginx - 集成ModSecurity实现WAF功能
ModSecurity是一款开源的Web应用防火墙(WAF),它能够保护Web应用免受各种类型的攻击。作为一个嵌入式模块,ModSecurity可以集成到常见的Web服务器(如Apache、Nginx)中,以拦截和阻止恶意的HTTP请求。其设计目标是提供一个灵活、可配置的安全解决方案,能够保护Web应用免受SQL注入、跨站脚本(XSS)、请求伪造、路径遍历等各种常见的Web攻击。原创 2024-05-19 23:19:50 · 6702 阅读 · 0 评论 -
Nginx - 深入了解 正向代理vs反向代理 、负载均衡算法 、 缓存策略
Nginx是一款高性能的HTTP服务器和反向代理服务器。代理服务器(Proxy Server)在客户端和目标服务器之间充当中介,其主要作用包括负载均衡、缓存、内容过滤和安全增强等。反向代理:代理服务器代表目标服务器接受客户端请求,并将请求转发给目标服务器,再将响应返回给客户端。正向代理:代理服务器代表客户端发送请求,获取目标服务器的响应并返回给客户端。原创 2024-05-19 23:12:54 · 6194 阅读 · 0 评论 -
Nginx - 一键实现Nginx的快速安装和优化配置
一键实现Nginx的快速安装和优化配置。原创 2024-05-19 22:57:05 · 5477 阅读 · 0 评论 -
Nginx - 健康检查终极指南:探索Upstream Check模块
nginx自带的和提供了基本的负载均衡功能,但确实缺少对后端节点健康状态的主动检测机制。为了实现健康检查并避免请求转发到故障节点,可以考虑使用第三方模块,这个模块可以有效地检测后端服务的健康状态,并在后端服务器不可用时暂停转发请求。是淘宝技术团队开发的nginx模快来检测后方服务的健康状态,如果后端服务器不可用,则所有的请求不转发到这台服务器。使用安装模块。配置nginx以使用该模块,并设置健康检查参数,如检查间隔、超时等。配置负载均衡器的upstream,使用定义后端节点,并使用进行健康检查。原创 2024-05-19 19:57:23 · 9803 阅读 · 2 评论 -
Nginx - 在Nginx中透传客户端真实IP的技巧
在使用 Nginx 作为反向代理服务器时,默认情况下,后端服务器只能看到 Nginx 的 IP 地址。为了记录日志、限制访问或进行其他基于 IP 地址的操作,获取客户端的真实 IP 地址非常重要。原创 2024-05-19 18:04:28 · 8699 阅读 · 0 评论 -
Nginx - 四层代理TCP配置SSL加密访问
``nginxstream {# 定义 upstream,指向 Redis 服务# 日志配置# SSL代理本地服务器server {# 监听 8100 端口,并开启 SSL# 访问日志路径# SSL 证书路径# SSL 证书私钥路径# 设置 SSL 协议版本# 启用 SSL 会话重用MD5;# SSL 加密算法# SSL 会话缓存# SSL 会话超时时间# 代理到 Redis 服务# 模拟客户端解密,对外暴露server {# 监听 8104 端口# 访问日志路径。原创 2024-05-19 12:30:00 · 6712 阅读 · 0 评论 -
Nginx - Stream 日志模块不完全指北
自1.11.4版本开始,Nginx还增加了对Stream会话日志的支持,提供基本的连接统计信息。通过这些步骤,你可以安装和配置nginx-log-enhancement模块,并增强Nginx的日志记录功能。这两个服务器块配置了Nginx监听不同的端口,并针对不同的需求进行了SSL/TLS配置、日志记录、代理转发等设置。在编译Nginx之前,需要将nginx-log-enhancement模块包含到Nginx的编译选项中。在Nginx的配置文件中添加日志格式和日志记录。),确保已经开始记录增强的日志信息。原创 2024-05-19 10:15:00 · 6896 阅读 · 0 评论 -
Nginx - 安全基线配置与操作指南
我们这里主要介绍针对Nginx中间件的安全基线配置指南,包括版本选择、用户创建、权限设置、缓冲区配置、日志管理、访问限制、错误页面处理、并发控制、补丁更新等方面。同时还涵盖了如何配置正向代理模块、防止目录遍历以及服务监控等内容,旨在指导系统管理员确保中间件服务器的安全性本文档规定了中间件服务器应当遵循的安全性设置标准,旨在指导系统管理人员或安全检查人员进行中间件的安全合规性检查和配置。原创 2024-05-19 08:15:00 · 6146 阅读 · 0 评论 -
Nginx - URL的微妙差异:Nginx斜杠魔法
语境:在location, if in location, limit_except中使用该指令设置代理服务器的协议和地址,以及可选的URI以映射到一个location。作为协议,可以指定“http”或“https”。地址可以是域名或IP地址,以及一个可选的端口:原创 2024-05-19 06:15:00 · 6084 阅读 · 0 评论 -
Nginx - 常用的控制请求处理和响应生成的指令的高阶用法和最佳实践
这些指令都能够在 Nginx 配置中灵活地控制请求处理和响应生成的流程,使得服务器能够根据具体需求进行定制化配置。通过采用以上最佳实践和高级指令,可以优化复杂的 Nginx 配置,提高服务器性能和可维护性。优化复杂的 Nginx 配置可以通过使用更多的高级指令和最佳实践来提高性能和可维护性。定期检查和优化配置文件,删除不再使用的指令和块,以确保配置的简洁性和可维护性。指令中执行复杂的逻辑,因为它可能会导致性能问题和不可预期的行为。指令将重复使用的配置片段提取到单独的文件中,以便统一管理和维护。原创 2024-05-18 17:47:31 · 5531 阅读 · 0 评论 -
Nginx - 集成Waf 功能
检查请求URI是否包含"cost("或"concat("函数,或者URI中包含的SQL命令(如union、and、select、or、delete、update、insert)前后有空格或’+'符号,如果匹配,返回状态码504。检查HTTP用户代理字符串是否包含常见的扫描工具、下载工具、测试工具和爬虫(如YisouSpider、ApacheBench、Jmeter、Nmap等),如果匹配,返回状态码508。检查请求URI是否包含空格、“/.“或”./”,如果匹配,返回状态码509。检查查询字符串是否包含。原创 2024-05-18 15:28:20 · 6218 阅读 · 0 评论 -
Nginx - stream 模块中按时间记录日志 ngx_stream_log_module
NGINX 中的一个模块,用于记录通过流式(TCP/UDP)代理的连接和数据传输。它允许配置日志格式和记录日志文件的位置,以便于监控和调试流式服务的请求和响应。原创 2024-05-18 15:02:59 · 6947 阅读 · 0 评论 -
Nginx - location中的匹配规则和动态Proxy
在这种情况下,可以使用多个if语句来满足不同条件下的处理逻辑。但需要注意的是,if语句是在Nginx的rewrite模块中执行的,并且在性能方面可能会有一些影响。另外,需要小心使用if语句,因为它们可能会引起一些意想不到的问题。对于可能互斥的参数匹配条件,确保按照正确的优先级进行排列,或者在适当的地方使用break来终止后续的if语句执行。指令的匹配行为,并使得开发者能够有序地控制请求的路由和处理。例如,在上述配置中,如果多个条件都满足,比如在第一个。进行正则匹配,而对于变量参数值,则需要使用。原创 2024-05-14 05:45:00 · 6228 阅读 · 0 评论 -
Nginx - 请求\上传下载速率_流控小妙招
限流(Rate Limiting)是一种有效的系统保护机制,通过控制系统的输入和输出流量来缓解潜在的压力和风险。在网站运行于公网环境时,面对用户正常访问、网络爬虫、恶意攻击或突发大流量等情况,系统可能会面临过载的风险,从而导致响应延迟甚至系统崩溃的问题。针对这种情况,限流技术能够有效地管理并发请求,保障系统的稳定运行。通过对一部分请求进行限制,例如限制同一IP地址的频繁请求,系统可以合理地分配资源,确保服务器能够正确响应其他请求。原创 2024-02-24 23:54:25 · 8483 阅读 · 1 评论 -
PKI - 借助Nginx实现_客户端使用CA根证书签发客户端证书
这个命令生成了一个 2048 位长度的 RSA 私钥,并将其保存到文件中。这个私钥将用于后续创建自签名的根证书。这个命令使用上一步生成的私钥 () 来生成一个自签名的根证书。具体地,它执行了以下操作:-x509:生成一个自签名的 X.509 格式证书。-new:创建一个新的证书请求。-nodes:不使用密码加密密钥。:指定之前生成的私钥文件作为证书的密钥。:指定证书的主题信息。在这里,表示证书的通用名称 (Common Name) 为client-ca。-days 5000。原创 2024-02-12 04:30:00 · 7375 阅读 · 0 评论 -
PKI - 借助Nginx实现_客户端使用自签证书供服务端验证
自签名证书可以用于验证客户端的身份。通过客户端提供的证书,服务端可以确保连接方是合法的客户端,并且拥有该证书对应的私钥。使用自签名证书的客户端可以与服务端建立加密的通信通道。客户端的证书中包含了公钥,可以用于加密数据传输,保护数据的机密性。通过客户端的证书验证,服务端可以确保与客户端直接通信,防止中间人攻击。如果客户端提供的证书无效或不匹配,服务端会拒绝连接,从而保护通信的安全性。服务端可以根据客户端提供的证书对其进行授权访问。原创 2024-02-11 16:32:10 · 7424 阅读 · 0 评论 -
PKI - 借助Nginx 实现Https_使用CA签发证书
使用 CA 签发的证书可以建立信任关系,客户端可以信任由公认的 CA 颁发的证书,从而确保与服务器之间的通信是安全可靠的。CA 对证书申请者进行身份验证,并在验证通过后签发证书。这样,服务器可以通过 CA 签发的证书来证明自己的身份,确保客户端与合法的服务器进行通信,防止中间人攻击。证书中包含了公钥,可以用于加密通信数据。使用 CA 签发的证书可以保护通信数据的机密性,防止数据被窃取或篡改。证书中包含了数字签名,可以用于验证通信数据的完整性。使用 CA 签发的证书可以确保通信数据在传输过程中没有被篡改。原创 2024-02-11 14:02:38 · 8034 阅读 · 0 评论 -
PKI - 借助Nginx 实现Https 服务端单向认证、服务端客户端双向认证
openssl采用C语言作为开发语言,这使得它具有优秀的跨平台性能。openssl支持Linux、UNIX、windows、Mac等平台。现在,Nginx 应该已经配置为使用自签名证书进行 HTTPS 加密通信。请确保防火墙已正确配置以允许流量通过 HTTPS 端口(默认为 443)。这些指令配置了 Nginx 流模块的 SSL/TLS 加密功能,包括了服务器证书、私钥、会话缓存等参数。openssl是一个功能丰富且自包含的开源安全工具箱。这些命令可以用来生成自签名的证书并查看证书的详细信息。原创 2024-02-08 23:16:36 · 8259 阅读 · 0 评论 -
Nginx - 使用error_page实现带有图片的自定义错误页面
在Nginx中,您可以使用error_page指令来指定当请求遇到特定错误时应当显示的自定义错误页面。创建错误页面首先,需要创建一个HTML文件作为错误页面。在这个文件中,可以定义需要的图片、样式和任何其他内容。例如,如果您想要在404错误页面显示一张图片,可以创建一个名为404.html的文件,并在其中使用标签来引用图片。配置Nginx在Nginx配置文件中(通常是nginx.conf或一个包含特定站点配置的文件),您需要添加一个server块来定义错误处理。例如:server {原创 2024-01-02 22:00:00 · 8164 阅读 · 0 评论 -
Nginx - 根据请求参数路由进行不同的响应
如果我们想通过URL里面的Query String进行不同的rewrite,应该如何处理呢?答案就是$arg变量。如果想要在nginx里面单独访问这些变量。可以这样 比如$type变量可以这样访问 $arg_type。还是需要找 nginx 的内置参数 看看能不能获取到传递的参数。最常见的是通过location进行路径匹配的时候,但是。需要对不同的接口实现流控。相同,存储了所提交的所有。原创 2023-09-06 19:15:06 · 10570 阅读 · 0 评论 -
Nginx - 使用Nginx实现数据采集的构想
整体流程:Nginx提供一个post埋点接口,如:http://xxxx/requestlog接收前端埋点请求,将post请求body写入本地日志文件,直接响应返回。后端以异步方式,使用采集代理程序监听日志文件,并将数据推送到kafka。程序对kafka数据统计分析,形成结果数据提供给上层应用使用原创 2022-11-26 19:30:00 · 34865 阅读 · 1 评论 -
重识Nginx - 18 网络收发与Nginx事件间的对应关系
Nginx是一个事件驱动的框架, 所谓事件即网络事件。Nginx每个连接自然对应两个网络事件,即 读事件和写事件。要想理解Nginx的原理,以及Nginx再各种极端场景下的处理时,就必须要先了解网络事件。原创 2022-10-05 10:16:50 · 37790 阅读 · 0 评论 -
重识Nginx - 17 Nginx支持的信号说明
说明: linux 的 kill 命令是向进程发送信号,kill 不是杀死的意思,-9 表示无条件退出,但由进程自行决定是否退出,这就是为什么 kill -9 终止不了系统进程和守护进程的原因。Linux kill 命令用于删除执行中的程序或工作。kill 可将指定的信息送至程序。原创 2022-10-05 09:00:00 · 35845 阅读 · 0 评论 -
重识Nginx - 16 Nginx reload流程浅析
在高并发的场景下 , reload会造成一段时间内worker进程数量大于CPU物理核数的情况,发生CPU争抢,CPU缓存效率下降,因此在QPS或者并发连接数不变的情况下,nginx总体性能会略有下降。nginx -t检查配置文件正确与否的操作,如果语法错误,reload会中断,原worker进程仍然按照原配置项提供服务。在新的配置文件里,如果我们监听了新的端口,master会打开这个监听端口,以便新起的worker进程进行监听和任务处理。配置文件中即使不再监听某个端口,已经建立的连接仍然可以继续处理。原创 2022-10-05 07:45:00 · 37053 阅读 · 0 评论 -
重识Nginx - 15 使用信号管理Nginx的父子进程
标红的 USR2 、WINCH ,只能通过 kill 的方式 来发送,主要是nginx 热部署的时候使用。原创 2022-10-04 23:47:52 · 36995 阅读 · 0 评论 -
重识Nginx - 14 Nginx 多进程结构
kill -SIGTERM关闭worker进程后,会重新起一个worker进程. 该命令是worker提供给master的,通常管理员只需要操作master进程就可以,如果一定要操作worker进程,那么一定是可以确认某一个worker进程出问题了,且信号对应的功能可以解决该问题。Nginx 期望一个worker进程使用一颗cpu, 把某个worker进程和某个cpu绑定在一起,可以更好地使用cpu上的缓存,来减少缓存失效的命中率。Worker进程 处理请求, Master进程管理Worker进程。原创 2022-10-04 23:37:10 · 36647 阅读 · 0 评论 -
重识Nginx - 13 对称加密与非对称加密的应用场景 & Nginx性能指标
因为公钥是公开的,所以任何持有公钥的人都能解密私钥加密过的密文,所以这个过程并不能保证消息的安全性,但是它却能保证消息来源的准确性和不可否认性,也就是说,如果使用公钥能正常解密某一个密文,那么就能证明这段密文一定是由私钥持有者发布的,而不是其他第三方发布的,并且私钥持有者不能否认他曾经发布过该消息。Alice收到加密后的内容再使用 密钥序列 1010 进行 解密,还原收到内容1100 -------------> 1100 ⊕ 1010 = 0110 (得到明文)生成一对密钥 (公钥、私钥)原创 2022-10-04 20:39:32 · 36463 阅读 · 0 评论 -
重识Nginx - 12 SSL/TLS 浅析
TLS v1.3在2014年已经提出,2016年开始草案制定,然而由于TLS v1.2的广泛应用,必须要考虑到支持v1.2的网络设备能够兼容v1.3,因此反复修改直到第28个草案才于2018年正式纳入标准(SSL(Secure Socket Layer,安全套接层)v1.0最早于由网景公司(Netscape,以浏览器闻名)在1994年提出,该方案第一次解决了安全传输的问题。)做了更多的扩展和算法改进,是目前(2019年)几乎所有新设备的标配。),被大规模应用,于2015年弃用(原创 2022-10-04 17:26:14 · 36260 阅读 · 0 评论 -
重识Nginx - 11 使用ngx_http_proxy_module的proxy_cache搭建一个具备缓存功能的反向代理服务
nginx 8888 作为反向代理 , 转发到 后端服务 9999 (用nginx模拟)查看nginx的进程,会发现 多了 两个进程。我们看到 2个 进程都起好了 .原创 2022-10-04 12:11:30 · 36513 阅读 · 0 评论 -
重识Nginx - 10 ngx_http_log_module日志模块 & GoAccess日志分析
ngx_http_log_module日志模块 & GoAccess日志分析。原创 2022-10-03 22:24:41 · 35644 阅读 · 0 评论 -
重识Nginx - 09 使用Nginx内置变量$limit_rate实现带宽限速
Limits the rate of response transmission to a client. The rate is specified in bytes per second. The zero value disables rate limiting. The limit is set per a request, and so if a client simultaneously opens two connections, the overall rate will be twice原创 2022-10-03 14:21:50 · 36075 阅读 · 0 评论 -
重识Nginx - 08 使用ngx_http_autoindex_module实现目录浏览功能
默认为on,显示出文件的确切大小,单位是bytes。改为off后,显示出文件的大概大小,单位是kB或者MB或者GB。默认为off,显示的文件时间为GMT时间。改为on后,显示的文件时间为文件的服务器时间。设置为off目录禁止访问,里面具体内容是可以访问的。设置为on目录是可以访问的。原创 2022-10-03 13:03:35 · 35594 阅读 · 0 评论 -
重识Nginx - 07 使用ngx_http_gzip_module对请求开启gizp压缩
测试下效果,看 Content-Encoding : gzip。支持的属性如上 , 可以认真阅读官方文档,这里就不细数了。留下了一个问题, 传输的大图片太大了,肿么办?当然了,我们关闭gizp , 再对比下。那就是开启 gzip压缩功能。看下nginx,conf配置。配置完成后记得reload。可以看到确实起到了效果 .我们再访问一个 网页。原创 2022-10-03 12:18:44 · 35741 阅读 · 0 评论 -
重识Nginx - 06 搭建静态资源Web服务器(alias VS root)
root与alias主要区别在于nginx如何解释location后面的uri, 分别以不同的方式将请求映射到服务器文件上。alias在使用正则匹配时,必须捕捉要匹配的内容并在指定的内容处使用。alias是一个目录别名的定义(仅能用于location上下文)使用alias时,目录名后面一定要加"/"时,web服务器将会返回服务器上的。root则是最上层目录的定义。注意这里是new_abc,时, 将会返回服务器的。如果一个请求的URI是。如果一个请求的URI是。注意Contex的范围。原创 2022-10-03 00:25:48 · 37427 阅读 · 1 评论 -
重识Nginx - 05 热更新_不停机更换新版本的nginx
说明: linux 的 kill 命令是向进程发送信号,kill 不是杀死的意思,-9 表示无条件退出,但由进程自行决定是否退出,这就是为什么 kill -9 终止不了系统进程和守护进程的原因。Linux kill 命令用于删除执行中的程序或工作。kill 可将指定的信息送至程序。原创 2022-10-02 14:07:45 · 36100 阅读 · 0 评论 -
重识Nginx - 04 Nginx常用命令行
更换新版本的nginx 二进制文件。原创 2022-10-02 11:07:41 · 36726 阅读 · 0 评论 -
重识Nginx - 03 Nginx配置语法
includei句允许组合多个配置文件以提升可维护性。部分指令的参数支持正则表达式 ,比如location。分号结尾,指令与参数间以空格符号分隔。指令块以{}大括号将多条指令组织在一起。使用#符号添加注释,提高可读性。配置文件由指令与指令块构成。原创 2022-09-26 00:50:36 · 36753 阅读 · 0 评论