魏长东

weichangdong

lua学习-2

nginx配置

location /test3{
		lua_code_cache off;
		default_type "text/html";  
		content_by_lua_file html/test3.lua; 
	}

	location /test4{
		lua_code_cache off;
		default_type "text/html";  
		content_by_lua_file html/test4.lua; 
	}
	location /test5{
		lua_code_cache off;
		default_type "text/html";  
		content_by_lua_file html/test5.lua; 
	}

代码:

test3.lua文件

--写响应头  
ngx.header.a = "1"  
--多个响应头可以使用table  
ngx.header.b = {"2", "3"}  
--输出响应  (输出到浏览器) 就算不加下面的一行代码 响应头依然有a b的数值
--ngx.say("a", "b", "<br/>")  
c="wcd"
d="weichangdong"
ngx.print(c, d, "<br/>")  -- 输出到浏览器了
--200状态码退出  
return ngx.exit(200) 

lua-1.png

 

test4.lua 文件

ngx.redirect("http://localhost/test1", 302)  

test5.lua文件 访问地址 

--未经解码的请求uri  
local request_uri = ngx.var.request_uri;  
ngx.say("request_uri : ", request_uri, "<br/>");  
--解码  
ngx.say("decode request_uri : ", ngx.unescape_uri(request_uri), "<br/>");  
--MD5  
ngx.say("ngx.md5 : ", ngx.md5("123"), "<br/>")  
--http time  
ngx.say("ngx.http_time : ", ngx.http_time(ngx.time()), "<br/>")  
ngx.say("ngx.time : ", ngx.time(), "<br/>")  --时间戳

访问地址 http://localhost/test5?wcd=12345&hh=wcd

输出结果

request_uri : /test5?WCD=2222222222222222
decode request_uri : /test5?WCD=2222222222222222
ngx.md5 : 202cb962ac59075b964b07152d234b70
ngx.http_time : Sun, 10 Apr 2016 03:06:24 GMT
ngx.http_time : 1460257584

ngx.header:输出响应头;

ngx.print:输出响应内容体;

ngx.say:通ngx.print,但是会最后输出一个换行符;

ngx.exit:指定状态码退出。

 

ngx.redirect:重定向; 

ngx.status=状态码,设置响应的状态码;

ngx.resp.get_headers()获取设置的响应状态码;

ngx.send_headers()发送响应状态码,当调用ngx.say/ngx.print时自动发送响应状态码;可以通过ngx.headers_sent=true判断是否发送了响应状态码。

 

ngx.escape_uri/ngx.unescape_uri : uri编码解码;

ngx.encode_args/ngx.decode_args:参数编码解码;

ngx.encode_base64/ngx.decode_base64:BASE64编码解码;

ngx.re.match:nginx正则表达式匹配;

 

更多Nginx Lua API请参考 http://wiki.nginx.org/HttpLuaModule#Nginx_API_for_Lua