lua 是乙個小巧的指令碼語言。該語言的設計目的是為了嵌入應用程式中,從而為應用程式提供靈活的擴充套件和定製功能。
lua指令碼可以很容易的被c/c++**呼叫,也可以反過來呼叫c/c++的函式,這使得lua在應用程式中可以被廣泛應用。
不僅僅作為擴充套件指令碼,也可以作為普通的配置檔案,代替xml,ini等檔案格式,並且更容易理解和維護。
centos上面需要先安裝如下依賴:yum install openssl openssl-devel curl curl-devel zlib zlib-devel pcre pcre-devel lua lua-devel
centos6.6 預設安裝的lua版本是:lua 5.1.4
方法一:直接使用tengine
安裝步驟如下:
這樣,就安裝好了。
然後,vim /usr/local/tengine/conf/nginx.conf
加入如下**
location /lua
最後,啟動tengine
訪問
頁面出現hello world lua ,表示安裝成功
方法二:使用openresty
openresty 是乙個基於 nginx 與 lua 的高效能 web 平台,其內部整合了大量精良的 lua 庫、第三方模組以及大多數的依賴項。用於方便地搭建能夠處理超高併發、擴充套件性極高的動態 web 應用、web 服務和動態閘道器。
官方**:
安裝文件:installation.html
安裝步驟:
wget
tar -xvf ngx_openresty-1.9.7.2.tar.gz
cd ngx_openresty-1.9.7.2
./configure --prefix=/usr/local/openresty (預設整合了lua環境)
gmake
gmake install
這樣,就安裝好了。
然後 vim /usr/local/openresty/nginx/conf/nginx.conf
加入如下**:
location /lua
最後,執行 /usr/local/openresty/nginx/sbin/nginx 啟動nginx
訪問
頁面出現hello world lua ,表示安裝成功
我們把lua**放在nginx配置中會隨著lua的**的增加導致配置檔案太長不好維護,因此我們應該把lua**移到外部檔案中儲存。
nginx + lua簡單使用示例
1:vim /lua/test.lua
內容如下:
ngx.say("hello world");
修改nginx.conf,新增如下內容
location /luafile
然後訪問/luafile 即可看到效果
預設情況下lua_code_cache 是開啟的,即快取lua**,即每次lua**變更必須reload nginx才生效,如果在開發階段可以通過lua_code_cache off;關閉快取,這樣除錯時每次修改lua**不需要reload nginx;
開啟後reload nginx會看到如下報警
nginx: [alert] lua_code_cache is off; this will hurt performance in /usr/local/openresty/nginx/conf/nginx.conf:54
下面是乙個使用lua獲取http請求資料的例子 vim /lua/info.lua
--請求頭
local headers = ngx.req.get_headers()
ngx.say("請求頭資訊
")ngx.say("host : ", headers["host"], "
")ngx.say("user-agent : ", headers["user-agent"], "
")ngx.say("user-agent2 : ", headers.user_agent, "
")--get請求引數
local uri_args = ngx.req.get_uri_args()
ngx.say("get請求引數
")ngx.say("id : ", uri_args["id"], "
")ngx.say("type : ", uri_args["type"], "
")--post請求引數
ngx.req.read_body()
local post_args = ngx.req.get_post_args()
ngx.say("post請求引數
")ngx.say("username : ", post_args["username"], "
")ngx.say("password : ", post_args["password"], "
")--獲取其他請求資訊
ngx.say("獲取其他請求資訊
")ngx.say("request_uri : ", ngx.var.request_uri, "
")ngx.say("請求的http協議版本 : ", ngx.req.http_version(), "
")ngx.say("請求方法 : ", ngx.req.get_method(), "
")ngx.say("原始的請求頭內容 : ", ngx.req.raw_header(), "
")ngx.say("請求的body內容體 : ", ngx.req.get_body_data(), "
")
Nginx Lua學習筆記 環境搭建
使用的openresty 具體教程可以參考 這裡只記錄下我自己的環境搭建過程 系統使用的是ubuntu 14.04.1 server amd64.iso 所有操作都使用了sudo提權.首先參考解決apt get install時media change please insert the disc ...
另外一種搭建nginx lua環境的方法
使用大牛 zhangyichun 提供的整合包快速安裝。例如 nginx的第三方模組redis,這個包實質就是乙個.lua檔案,是個庫檔案,提供一些訪問redis的介面 git clone 拷貝 該包中,有乙個 lib 目錄,將 lib 目錄下的檔案和子目錄拷貝至上文lua package path...
linux系統安裝Nginx Lua環境
這是我總結的安裝,供參考 需要最新版的nginx,luajit,ngx devel kit,lua nginx module等安裝檔案 nginx luajit lua或者luajit都是可以的,但是出於效能的考慮,推薦安裝luajit ngx devel kit lua nginx module ...