魏长东

weichangdong

正在查看: lua 分类下的文章(第 4 页 / 共 33 篇)

lua学习-3

Nginx全局内存

使用过如Java的朋友可能知道如Ehcache等这种进程内本地缓存,Nginx是一个Master进程多个Worker进程的工作方式,因此我们可能需要在多个Worker进程中共享数据,那么此时就可以使用ngx.shared.DICT来实现全局内存共享。更多API请参考http://wiki.nginx.org/HttpLuaModule#ngx.shared.DICT。 

1、首先在nginx.conf的http部分分配内存大小

http {
    include       mime.types;
    default_type  application/octet-stream;

    lua_package_path "lualib/?.lua;;";  #lua 模块  
    lua_package_cpath "lualib/?.so;;";  #c模块
    lua_shared_dict shared_data 1m; 
	lua_code_cache off;
...........................................【省略】
location /test6{
		default_type "text/html";  
		content_by_lua_file html/test6.lua; 
	}

代码test6.lua

--1、获取全局共享内存变量  
local shared_data = ngx.shared.shared_data  
  
--2、获取字典值  
local i = shared_data:get("i")  
if not i then  
    i = 1  
    --3、惰性赋值  
    shared_data:set("i", i)  
    ngx.say("lazy set i ", i, "<br/>")  
end  
--递增  
i = shared_data:incr("i", 1)  
ngx.say("i=", i, "<br/>") 

访问的时候 第一次是输出

lazy set i 1
i=2

第二次访问输出

i=3

每次刷新都加1

这个功能,做ip的访问次数限制 应该挺好,不用借助redis了。

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; 
	}

代码:

»»阅读全文

lua学习-1

我的环境用的是 win的openresty。(文章内容来自 http://jinnianshilongnian.iteye.com/blog/)

HelloWorld 的代码

首先配置nginx

location /hello {
            default_type 'text/html';  
	    lua_code_cache off;
	    content_by_lua 'ngx.say("hello world")';
        }

	location /test1 {
            default_type 'text/html';  
	    lua_code_cache off;
	content_by_lua_file  html/test1.lua;
        }
	location ~ /test2/(\d+)/(\d+) { 
	lua_code_cache off;
	    #设置nginx变量  
	    set $a $1;   
	    set $b $host;  
	    default_type "text/html";  
	    #nginx内容处理  
	    content_by_lua_file html/test2.lua;  
	    #内容体处理完成后调用  
	    echo_after_body "ngx.var.b $b";  
	} 

»»阅读全文