内容比较琐碎稍后继续补充吧……。
nginx断点的持续功能是通过ngx_http_range_filter_module实现的
其实这个模块由两个模块构成。 一个是ngx _ http _ range _ header _ filter _ module。
设置用于设置http响应的头信息,例如:内容范围,并指定区间块的开始/结束位置;
设置内容长度,并指定重新分发断点时响应包的大小; 设定206响应代码代替200响应代码等。
另一个模块是ngx _ http _ range _ body _ filter _ module,它从缓冲区中搜索指定分区块的内容,并将该分区块的内容发送到客户端。
在Nginx的大多数事件中,epoll EPOLLET (边缘触发)方法用于触发事件,只有侦听端口的读取事件是EPOLLLT。
对于边缘触发器,如果发生可读事件,则必须立即处理。 否则,读取事件将不再发生,连接可能会饿死。
CPU旋转锁定
Nginx事件处理的条目函数是ngx_process_events_and_timers (
ngx_process_events ()函数是所有事件处理的入口,它遍历所有事件。
method=ngx.var.request _ method-- http://wiki.nginx.org/httpcore module #.24 request _ method
方案=ngx.var.schema---- http://wiki.nginx.org/httpcore module #.24方案
host=ngx.var.host---- http://wiki.nginx.org/httpcore module #.24h ost
hostname=ngx.var.hostname---- http://wiki.nginx.org/httpcore module #.24 hostname
uri=ngx.var.request _ uri---- http://wiki.nginx.org/httpcore module #.24 request _ uri
path=ngx.var.uri---- http://wiki.nginx.org/httpcore module #.24u ri
filename=ngx.var.request _ filename-- http://wiki.nginx.org/httpcore module #.24 request _ filename
query _ string=ngx.var.query _ string---http://wiki.nginx.org/httpcore module #.24 query _ string
user _ agent=ngx.var.http _ user _ agent-- http://wiki.nginx.org/httpcore module #.24 http _ header
remote _ addr=ngx.var.remote _ addr-- http://wiki.nginx.org/httpcore module #.24 remote _ addr
remote _ port=ngx.var.remote _ port-- http://wiki.nginx.org/httpcore module #.24 remote _ port
remote _ user=ngx.var.remote _ user-- http://wiki.nginx.org/httpcore module #.24 remote _ user
remote _ passwd=ngx.var.remote _ passwd---- http://wiki.nginx.org/httpcore module #.24 remote _ passwd
content _ type=ngx.var.content _ type-- http://wiki.nginx.org/httpcore module #.24 content _ type
content _ length=ngx.var.content _ length-- http://wiki.nginx.org/httpcore module #.24 content _ length
headers=ngx.req.get _ headers (-- http://wiki.nginx.org/httpluamodule # ngx.req.get _ headers
uri _ args=ngx.req.get _ uri _ args (-- http://wiki.nginx.org/httpluamodule # ngx.req.get _ ri _ args
post _ args=ngx.req.get _ post _ args (-- http://wiki.nginx.org/httpluamodule # ngx.req.get _ post _ args
socket=ngx.req.socket---http://wiki.nginx.org/httpluamodule # ngx.req.socket
request : read _ body---- http://wiki.nginx.org/httpluamodule # ngx.req.read _ body
request:get_uri_arg(name,default )
请求: get _ post _ arg (name,default )
请求: get _ arg (name,default ) )。
请求: get _ cookie (key,decrypt ) )。
request : rewrite---http://wiki.nginx.org/httpluamodule # ngx.req.set _ uri
request : set _ uri _ args---http://wiki.nginx.org/httpluamodule # ngx.req.set _ uri _ args
headers=ngx.header---- http://wiki.nginx.org/httpluamodule # ngx.header.header
response : set _ cookie (密钥、值、加密、持续、路径)。
响应:写入(内容)
响应:写入(内容) )。
响应: LTP (模板,数据) )。
response:redirect(URL,status )-- http://wiki.nginx.org/httpluamodule # ngx.redirect
response : finish---- http://wiki.nginx.org/httpluamodule # ngx.eof
response:is_finished (
响应: defer (func,)响应返回后运行
NGX.Escape_uri(str ) url转义
NGX.UNESCAPE_uri(str ) url转义恢复
ngx.encode_args ()将lua table编码为查询参数字符串
NGX.decode_args(str,max_args? )将查询字符串转换为lua table
Lua GC的对象
JIT编译器不支持的原语被称为通告的(Nyi )原语。
决不会编译基于经典lua_CFunction方法实现的Lua C模块等。 (因此,需要尽量在LuaJIT的FFI中调用c。 )