ngx_lua模块的原理:1、每个worker(工作进程)创建一个Lua VM,worker内所有协程共享VM;2、将Nginx I/O原语封装后注入 Lua VM,允许Lua代码直接访问;3、每个外部请求都由一个Lua协程处理,协程之间数据隔离;4、Lua代码调用I/O操作等异步接口时,会挂起当前协程(并保护上下文数据),而不阻塞worker;5、I/O等异步操作完成时还原相关协程上
转载 10月前
37阅读
0、手册应该是学习语言的最好的文档,一边看文档,一边想把它记录下来,lua 5.2 英文手册地址:http://www.lua.org/manual/5.2/manual.html在lua中,任何值都可以拥有元表(metatable)。元表本质是就是lua中table,但同时通过元表可以自定义在某些值上的操作。通过设置元表中特定的域(fields)值,可以改变某些值的操作行为。比如,当非数值类型的
3.7 发送响应请求处理完毕后,需要向用户发送HTTP响应,告知客户端Nginx的执行结果。HTTP响应主要包括响应行、响应头部、包体三部分。发送HTTP响应时需要执行发送HTTP头部(发送HTTP头部时也会发送响应行)和发送HTTP包体两步操作。本节将以发送经典的“Hello World”为例来说明如何发送响应。3.7.1 发送HTTP头部下面看一下HTTP框架提供的发送HTTP头部的方法,如下
 下载连接:nginx:http://nginx.org/en/download.html http://nginx.org/download/ lua-nginx模块安装文件:https://github.com/openresty/lua-nginx-module/tags lua-zlib模块安装文件: https://github.com/brimwor
转载 8月前
83阅读
需求背景类似于论坛型的网站经常会被黑掉,除了增加硬件防护感觉效果还是不太好,还会偶尔被黑,waf的功能正好实现了这个需求。waf的作用: 防止sql注入,本地包含,部分溢出,fuzzing测试,xss,SSRF等web攻击 防止svn/备份之类文件泄漏 防止ApacheBench之类压力测试工具的攻击 屏蔽常见的扫描黑客工具,扫描器 屏蔽异常的网络请求 屏蔽图片附件类目录php执行权限 防止we
转载 2024-08-30 18:00:18
22阅读
ngx_lua 模块 https://segmentfault.com/a/1190000012233483 nginx lua重置请求参数及常量备忘 Lua_Nginx_API Lua_Nginx_API ngx_lua模块的原理: 1、每个worker(工作进程)创建一个Lua VM,worke
转载 2019-03-07 16:25:00
234阅读
2评论
ngx_lua模块的原理:1、每个worker(工作进程)创建一个Lua VM,worker内所有协程共享VM;2、将Nginx I/O原语封装后注入 Lua VM,允许Lua代码直接访问;3、每个外部请求都由一个Lua协程处理,协程之间数据隔离;4、Lua代码调用I/O操作等异步接口时,会挂起当前协程(并保护上下文数据),而不阻塞worker;5、I/O等异步操作完成时还原相关协程上...
转载 2021-07-12 15:34:48
285阅读
nginx模块nginx作为项目的7层代理入口,对于http请求的过滤,如sql注入,xss攻击等过滤功能较弱,研究了下开源的一些waf,完全开源的https://github.com/xsec-lab/x-waf,利用lua来过滤请求,同时拥有一个管理控制台,添加规则和代理,但使用过程中,缺少文档,碰到一些问题,需要调试和增强,促使用window编译通过源代码lua和使用x-waf。lua-ng
对于一个web服务器程序来说,对字符串处理的需求是必须的。由于web环境下的各种编码,也导致了web服务器程序字符串处理的繁杂性。在nginx源码中,ngx_string.c 这个文件就是来应对字符串处理的一些源码,源码中经常的使用到了这里中的函数,本文对ngx_string.c 我们来看它的基本数据结构: struct { size_t len; u_char *
Ngxtop实时解析nginx访问日志,并且将处理结果输出到终端,功能类似于系统命令top,所以这个软件起名ngxtop。有了ngxtop,你可以实时了解到当前nginx的访问状况,再也不需要tail日志看屏幕刷新。首先在 Linux 系统中安装依赖库pip(ngxtop是用python编写的)。1.安装ngxtop#yum install python python-pip -y #yum in
转载 2024-09-30 18:55:06
27阅读
  本篇开始正式做功能,我在开发拼团提醒之前,拼多多并没有放出拼团人数不足就提醒卖家的功能。有这个想法主要来源于朋友的抱怨,我想这应该是大部分卖家的心声吧。经过分析,拿到了几个api,不要问我api怎么拿到的,这不是本系列的内容。接口1:http://apiv4.yangkeduo.com/mall/{0}/info?pdduid=0(传入店铺编号,可以获取店铺资料)接口2:http://apiv
转载 10月前
17阅读
MOOCHINE - 一个简单的轻量级的web framework, 基于ngx_OpenResty(ngx_lua,ttp://openresty.org) 做的框架,https://github.com/appwilldev/moochinengx_lua_wafngx_lua_waf是我刚入职趣游时候开发的一个基于ngx_lua的web应用防火墙。代码很简单,开发初衷主要是使用简单,高性能和
原创 2014-11-01 18:06:00
751阅读
ngx_lua模块的原理:1、每个worker(工作进程)创建一个Lua VM,worker内所有协程共享VM;2、将Nginx I/O原语封装后 Lua VM,允许Lua代码直接访问;3、每个外部请求都由一个Lua协程处理,协程之间数据隔离;4、Lua代码调用I/O操作等异步接口时,会挂起当前协程(并保护上下文数据),而不阻塞worker;5、I/O等异步操作完成时还原相关协程上...
转载 2022-04-11 11:16:16
199阅读
linux 内存是后台开发人员,需要深入了解的计算机资源。合理的使用内存,有助于提升机器的性能和稳定性。本文主要介绍 linux 内存组织结构和页面布局,内存碎片产生原因和优化算法,linux 内核几种内存管理的方法,内存使用场景以及内存使用的那些坑。从内存的原理和结构,到内存的算法优化,再到使用场景,去探寻内存管理的机制和奥秘。一、走进 linux 内存1、内存是什么?1)内存又称主存,是 CP
nginx lua模块淘宝开发的nginx第三方模块,它能将lua语言嵌入到nginx
原创 2023-08-11 10:59:59
0阅读
nginx 内存池 ngx_pool_tnginx 是自己实现了内存池的,所以在nginx ngx_pool_t 这个结构也随处可见,这里主要分析一下内存池的分配逻辑。内存池实现了包括小块内存、大块内存和清理资源几种资源的处理,应该来说覆盖了绝大数的使用场景了。相关结构定义// 大块内存 typedef struct ngx_pool_large_s ngx_pool_large_t; stru
转载 2024-02-12 13:57:19
18阅读
void* ngx_slab_alloc(ngx_slab_pool_t* pool, size_t size) { void* p; // 进程间加锁保护 ngx_shmtx_lock(&pool->mutex); // 申请内存块 p = ngx_slab_alloc_locked(pool, size); // 进程间解锁
转载 2024-05-08 20:21:26
116阅读
Nginx_Lua1.1. 介绍1.2. 安装1.2.1. 安装JIT平台1.2.2. NDK与Lua_module1.2.3. 编译安装Nginx1.3. 嵌入Lua后1.3.1. 检测版本1.3.2. Hello
转载 2023-08-14 10:39:48
94阅读
概述手机的短消息实现目前有三种方法:   1.通过移动网关发送短消息,使用该方法不需要附加的硬件,但是需要到电信部门申请网关,比较适用于一些大型的网络通讯公司开发,目前华为,中兴等公司就做的这方面的工作,并且还有相应的开发包供开发人员使用.   2.在电脑上通过GSM      MODEM向手机发送中文短消息,这是目前
一、nginx请求处理流程1.1 nginx 11 个处理阶段nginx实际把http请求处理流程划分为了11个阶段,这样划分的原因是将请求的执行逻辑细分,以模块为单位进行处理,各个阶段可以包含任意多个HTTP模块并以流水线的方式处理请求。这样做的好处是使处理过程更加灵活、降低耦合度。这11个HTTP阶段如下所示:1.1.1 接收到完整的HTTP头部后处理的阶段NGX_HTTP_POST_READ
转载 2024-03-20 18:07:33
62阅读
  • 1
  • 2
  • 3
  • 4
  • 5