chunked编码格式引发的问题 1、问题在适配某家的cas时,票据校验时一直失败,通常是以下几个问题引发的问题1、网关与cas服务器的网络不通,导致票校验的请求发送不出去2、cas服务器的票据校验接口,配置了域名,但是在nginx没有配置dns,导致域名无法解析,请求无法发送 3、配置了ip,但是cas服务端限制了host,禁用了ip访问 4、票据校验的请求有问题,service参数组装不正确 经过排查后,发现都不是上面的原因, 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很难满足这种需求,因此在这个基础上实现了slab共享内存。 1、初始化共享内存模块在配置初始 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 #协商缓存 #no cache nginx
ssl双向验证— ssl_verify_depth的作用 前言关键词:根证书、中间证书、验证深度、ssl_verify_depth 根证书与中间证书在进行ssl验证前,服务器一般会向CA申请公钥证书,即将自己的公开密钥交给CA,CA用自己的私钥向服务器的公钥数字签名并返回公钥证书,在数字签名的过程中,CA一般会用根目录颁发证书,这种证书叫做根证书。 问题是,万一根目录颁发错了证书,或者需要撤销根,这时所有根目录颁发的证书都将失效,这样代价是巨大的,因此出 2024-04-12 #ssl #证书
SOCKET.IO最佳实践-代理篇 前言:在传统的轮询中,客户端定期向服务器发送请求,询问是否有新的数据可用。这会导致很多不必要的空请求,尤其是在没有新数据可用的时候。而且如果使用的是HTTP/1.0版本,每个请求/响应都需要打开一个新连接,考虑到连接的建立、关闭、TCP慢启动机制等因素,这是一个很大的开销。因此HTTP/1.1引入了2个头部:Connection头部和Upgrade头部,用于协议升级。 2024-04-12 #nginx #websocket #socket.io
openresty---lua调用c原理分析 openresty—lua调用c模块原理分析1、lua基础1、lua虚拟机lua是解释型语言,需要虚拟机对象。不同的lua虚拟机之间的工作是线程安全的,因为一切和虚拟机相关的内存操作都被关联到虚拟机对象中,而没有利用任何其它共享变量。lua的虚拟机核心部分,没有任何的系统调用,是一个纯粹的黑盒子,正确的使用lua,不会对系统造成任何干扰。这其中最关键的一点是,lua让用户自行定义内存管理器,在创建 2024-04-12 #lua虚拟机 #global_State #lua_State #元表 #协程