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 声明,然后只有 2024-08-17 #gcc #fcommon #fno-common
chunked编码格式引发的问题 1、问题描述在适配某 CAS(Central Authentication Service)系统时,票据校验一直失败。通常导致该问题的原因包括: 网络连通性问题:网关与 CAS 服务器的网络不通,导致票据校验请求无法发送 DNS 解析问题:CAS 服务器的票据校验接口配置了域名,但在 Nginx 中未配置 DNS,导致域名无法解析,请求无法发送 Host 限制问题:配置了 IP 地址,但 CAS 2024-08-13 #http #Transfer-Encoding #chunked
SSO实践 在早期的互联网发展时期,用户使用的系统很少,每个系统都有自己的登录系统,用户使用每个系统需要分别进行登录。随着互联网的发展,同一产品下耦合的系统越来越多,这时还需要用户在每个系统都进行登录,这对用户的体验感很不好,这时就需要一种方案可以解决多个相互信任系统需要多次登录的问题,此时单点登录应用而生。 单点登录全称Single Sign On,简称SSO。它的作用是:在多个应用系统中,只需要登录一次, 2024-08-04 #SSO #cas #单点登录
一次ngx_slab内存泄露问题 1、问题根据现场描述,隔几天就会出现nginx无法访问的情况,场景为正常使用状态,出现异常时,日志报大量 ngx_slab_free() : chunk is already free的错误,出现core dump,进程会不端重新拉起,不断core。此情况下,需要重启nginx才能恢复正常。 现场使用了访问控制功能,其中配置了几百条对客户端ip的访问控制规则。 2、现象分析1、调试core,首先 2024-07-30 #nginx #slab
ngx_slab共享内存 Nginx 采用多进程架构,在实现访问控制、限流等功能时,进程间需要共享数据。例如,一个 URI 的多笔请求可能由多个进程处理,此时进程需要判断该 URI 是否达到了限制次数。因此,访问控制模块和限流模块需要使用共享内存进行进程间通信。 Nginx 实现了 ngx_shm_t 共享内存,但如果要共享一些复杂的数据结构,ngx_shm_t 很难满足这种需求。因此,在 ngx_shm_t 的基础上实现 2024-07-09 #nginx #slab
负载均衡算法解析 1、nginx-轮询1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253545556575859606162636465666768697071727374757677787980818283848586878889909192static ngx_http 2024-06-02 #nginx #负载均衡
浅析nginx实现websocket原理 前言:传统的 HTTP 协议是一种无状态的请求/响应协议,每次请求都需要重新建立连接。在一些特殊的业务场景下,服务端需要主动发送数据到客户端,例如行情推送、监控告警推送等。然而,HTTP 协议不支持双向通信,因此需要将 HTTP 协议”升级”为 WebSocket 协议。WebSocket 协议可以在建立连接后保持连接状态,双方可以通过一个持久的连接通道进行实时通信。WebSocket 2024-04-12 #nginx #websocket
协商缓存在nginx的应用与实践 1、前言缓存是一个高效减轻网络与服务器压力的机制,具有减少冗余数据传输、缓解网络瓶颈以及降低时延等优点。通常客户端在请求数据时,会发送请求到原始服务器获取,重复的数据可能会在网络中多次传输,但是如果有缓存,客户端就可以直接从缓存中获取数据,减少重复的流量。例如在浏览器首次请求某些静态资源时,状态码会是200 ok,但是刷新页面,状态码就会变为200 ok ( from memory cache), 2024-04-12 #nginx #协商缓存 #no cache
ssl双向验证— ssl_verify_depth的作用 前言关键词:根证书、中间证书、验证深度、ssl_verify_depth 根证书与中间证书在进行ssl验证前,服务器一般会向CA申请公钥证书,即将自己的公开密钥交给CA,CA用自己的私钥向服务器的公钥数字签名并返回公钥证书,在数字签名的过程中,CA一般会用根目录颁发证书,这种证书叫做根证书。 问题是,万一根目录颁发错了证书,或者需要撤销根,这时所有根目录颁发的证书都将失效,这样代价是巨大的,因此出 2024-04-12 #ssl #证书