浅析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 #元表 #协程
nginx的reuseport特性分析 1、奇怪的现象1.1、断崖问题业务进行性能测试,发现一个奇怪的现象,整个压测过程中总会有断崖的情况。本来TPS在2万8左右,会直接掉到1500左右,然后又马上恢复,但是只能恢复到2万2,损耗了20%。 现场架构: 现场XXX、nginx、服务都部署在一个机器,配置为: 1234567机器:海光麒麟v10 sp4 x86性能指标:128c 512Gnginx配置:16个work进程,句柄数4 2024-04-12 #nginx #reuseport #linux内核 #SO_REUSEPORT
Cookie属性之secure、httponly 前言 Cookie是一种用于在Web浏览器和Web服务器之间传递信息的机制,具有多种属性。经常会有安全测试不了解Cookie的属性,而认为某个属性是漏洞,最常见的就是secure,作者就见过很几次漏洞报告,认为http协议下,Cookie的secure为false是一个安全漏洞,这其实是测试没有理解secure的真正作用。那么阅读本文你将得到以下几个问题的答案 1、Cookie在会话鉴权中扮演 2024-04-12 #http