openresty-域名解析 1、NGINX 支持的域名解析方式 静态解析:启动/重载时仅调用系统解析库(getaddrinfo()),将域名映射为 IP 列表后缓存,后续不再更新。 变量驱动的动态解析:在 proxy_pass 等指令中使用 $variable,结合 resolver,使 NGINX 在每次请求阶段异步更新域名解析结果。 **异步 resolver + resolve**:开源版 NGINX ≥ 1 2025-05-26 #nginx,openresty #dns #hosts
在OpenResty中实现Redis Sentinel支持 在OpenResty中实现Redis Sentinel支持1、引言OpenResty 通过 lua-resty-redis 模块为 Nginx 提供了与 Redis 交互的能力,但该模块原生仅支持直连模式,不具备高可用场景下的故障转移能力。在复杂的生产环境中,单点 Redis 容易因节点故障导致服务中断,因此需要借助 Redis Sentinel 来实现监控、故障切换、通知和配置提供者等高可用特性 2025-05-17 #openresty,redis #sentinel
NGINX 如何根据客户端协议构造并返回响应 NGINX 如何根据客户端协议构造并返回响应Nginx 向客户端返回响应时,会根据客户端使用的协议类型,构造对应格式的响应数据。为了实现这一点,Nginx 在响应阶段设置了一系列 filter(过滤器)模块,每个 filter 对应特定协议或处理职责。 当响应准备就绪后,这些 filter 会按照链式结构依次执行。Nginx 会根据请求上下文中的 r(ngx_http_request_t)结构体中 2025-05-15 #nginx,HTTP1 #HTTP2
nginx之上下游不同协议的转换 Nginx 主要用于实现路由和反向代理功能。在实际应用中,客户端与后端服务可能使用不同的协议,例如客户端使用 HTTP/2,而后端仍采用 HTTP/1.1。作为应用层(L7)代理,Nginx 会分别与客户端和后端建立独立的连接,解析、处理请求和响应,并根据目标协议格式重新构造数据后转发。 需要注意的是:无论前后端协议是否一致,Nginx 始终执行这一套“应用层重构”流程。当协议 2025-05-10 #websocket #nginx,HTTP
服务自动发现 Nginx 采用 master–worker 多进程模型,其中 master 进程负责管理和信号交互,worker 进程执行网络 I/O、定时器和延迟队列事件循环 。 1、nginx的原理1.1、配置解析与端口初始化1 Master 进程:解析配置与打开监听端口 配置解析:在 main() 中,master 进程首先调用 ngx_init_cycle(),该函数基于 ngx_conf_ 2025-04-19 #nginx,work #zookeeper
Chrome 133 引发 net::ERR_CONTENT_LENGTH_MISMATCH 问题的分析与解决 【现象】 最近有用户反馈,在使用 浏览器 访问系统时,部分静态资源请求出现 net::ERR_CONTENT_LENGTH_MISMATCH 错误。具体现象: 页面请求 多个静态资源(HTML/JS/CSS),但部分请求随机失败。 每次刷新,失败的资源 不固定,但问题持续发生。 【排查】 介入排查后,发现几个问题 使用 Chrome 131 及以下版本、Edge、Fire 2025-02-26 #nginx,chrome
linux对于io_uring的应用 1、内核支持io_uring最近发现linux新增了2个补丁,关于支持io_uring,事实上linux在5.1版本就引入了io_uring,有点好奇这次的补丁是实现什么功能 https://git.kernel.org/pub/scm/linux/kernel/git/netdev/net-next.git/commit/?id=71f0dd5a3293d75d26d405ffbaedfdda4 2025-02-12 #linux,io_uring #epoll
网络部分-epoll分析 1、内核如何接收数据不同主机通过网卡进行数据的交互,网卡将电磁波转换为模拟信号,再转换为数字信号,再由OSI模型传到应用层,变成人可以识别的数据。信号转换属于通信相关的知识,所以从接收到数字信号开始分析数据的流转。 首先当数据帧从网线到达网卡上的时候,第一站是网卡的接收队列。网卡在分配给自己的RingBuffer中寻找可用的内存位置,找到后DMA引擎会把数据DMA到网卡之前关联的内存里,这个时候 2024-11-29 #epoll #nginx,socket
ingress-nginx使用limit_except的问题 1、错误的返回-503起因是ingress-nginx有人提了一个issue:https://github.com/kubernetes/ingress-nginx/issues/11742 ,使用limit_except时没有得到预期的403,而是得到了503,首先看下怎么复现 首先得有一个kubernetes环境,启动一个服务节点foo,然后安装ingress-nginx,ingress的配置 2024-08-25 #ingress-nginx #limit_except
gcc编译选项--fcommon multiple definition最近在龙蜥操作系统编译时,出现了multiple definition的错误,重复定义?查看了代码,有几个变量确实是重复定义了,简单来讲就是在一个.h文件定义了一个变量,多个.c文件又包含了这个.h,导致这个变量在多个.c文件重复定义,在编译时报错。 修复也很简单,.h文件的中的变量统一加extern,然后只有一个.c文件才能定义初始化这个变量,这样就可以避免 2024-08-17 #gcc #fcommon #fno-common