Nginx中使用Lua程式設計 轉

2021-09-25 02:02:10 字數 3873 閱讀 4707

1.簡介

openresty,也被稱為「ngx_openresty」,是乙個以nginx為核心同時包含很多第三方模組的web應用伺服器。借助於nginx的事件驅動模型和非阻塞io,可以實現高效能的web應用程式。 openresty不是nginx的分支,它只是乙個軟體包。主要有章亦春維護。

openresty預設整合了lua開發環境,而且提供了大量元件如mysql、redis、memcached等,使得在nginx上開發web應用更方便簡單。

2.安裝openresty

make && make install

./configure   --help
配置nginx的啟動指令碼

vim   /etc/init.d/nginx
新增如下內容:

exit $retval新增可執行許可權:

chmod   a+x   /etc/init.d/nginx
啟動nginx

service   nginx   start
3.在nginx中使用lua指令碼

cd    /usr/local/openresty/nginx/conf

mkdir lua vhost

3.1 測試在nginx中使用lua指令碼

vim   /usr/local/openresty/nginx/conf/vhost/lua.conf
其中內如如下:

server    

location /lua

limit_conn preip 1000;

access_log logs/access_rua.log;

}

測試是否可以訪問:

service nginx reload

然後訪問:

如果輸出一下內容證明在nginx中可以執行lua指令碼:

hello,lua!

3.2在nginx中使用lua指令碼訪問redis:

i)連線redis集群,然後新增測試引數

192.168.1.30:7000> set '123' '456'
ii) 新增連線redis的lua指令碼

vim /usr/local/openresty/nginx/conf/lua/redis.lua
其內容如下:

local   redis =require  "resty.redis"

local conn = redis.new()

conn.connect(conn, "192.168.1.30", '7000')

local res=conn:get('123')

if res==ngx.null then

ngx.say("redis集群中不存在key--'123' ")

return

endngx.say(res)

iii)在上面的lua.conf配置檔案中新增:

location    /lua_redis
iv)測試是否可以訪問

service nginx_reload

然後訪問:

如果輸出以下內容則證明可以訪問redis:

Lua程式設計中使用巢狀迴圈的使用教程

lua程式語言允許使用乙個迴圈內嵌另乙個迴圈。下文將介紹幾個例子來說明這一概念。語法在lua中巢狀迴圈語法語句如下 複製 如下 for init,max min value,increment do for init,max min value,increment do statement s en...

Nginx 使用Lua指令碼

etc profile 加入並使之生效 lua exportluajit lib usr local luajit lib exportluajit inc usr local luajit include luajit 2.0 執行 source etc profile ndk nginx dev...

Lua指令碼中使用Unicode

如何在lua指令碼中使用unicode是本文要介紹的內容,主要是來學習unicode在lua指令碼中如何使用,具體內容來看本文詳細內容講解。說說最近的幾個事情 1 project採用lua,ui模組肯定是要徹底使用utf 16的,可是lua不支援,怎麼辦?最後好像是寫了userdata,可以將mul...