日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問(wèn) 生活随笔!

生活随笔

當(dāng)前位置: 首頁(yè) > 编程资源 > 编程问答 >内容正文

编程问答

1. nginx扩展——ngx_lua 模块简介、安装

發(fā)布時(shí)間:2025/7/25 编程问答 38 豆豆
生活随笔 收集整理的這篇文章主要介紹了 1. nginx扩展——ngx_lua 模块简介、安装 小編覺(jué)得挺不錯(cuò)的,現(xiàn)在分享給大家,幫大家做個(gè)參考.

1. 簡(jiǎn)介

? lua-nginx-module(ngx_lua module)把 Lua5.1 的解釋器 或 LuaJIT 2.0/2.1 的解釋器嵌入到 nginx 中,將強(qiáng)大的 Lua 線程(Lua threads)與 nginx 事務(wù)模型(Nginx event model)相結(jié)合,我們可以更輕易的改變 子請(qǐng)求(subrequests)的處理過(guò)程。

? 與 Apache's mod_lua 和 Lighttpd's mod_magnet 不同,通過(guò)此模塊執(zhí)行的 Lua 代碼是非阻塞的,同時(shí)此模塊提供的 Nginx API for Lua 可以處理上游服務(wù),比如 MySQL, PostgreSQL, Memcached, Redis, upstream HTTP web services。

? ngx_lua 可以與下面的 Lua 庫(kù)、nginx 模塊結(jié)合:

  • lua-resty-memcached
  • lua-resty-mysql
  • lua-resty-redis
  • lua-resty-dns
  • lua-resty-upload
  • lua-resty-websocket
  • lua-resty-lock
  • lua-resty-logger-socket
  • lua-resty-lrucache
  • lua-resty-string
  • ngx_memc
  • ngx_postgres
  • ngx_redis2
  • ngx_redis
  • ngx_proxy
  • ngx_fastcgi

? 通過(guò) ngx.location.capture 或 ngx.location.capture_multi 的方式, ngx_lua 可以使用幾乎所有的 nginx 模塊。推薦使用 lua-resty-*庫(kù)的方式訪問(wèn) nginx 的上游模塊,而不是創(chuàng)建子請(qǐng)求的方式,使用前者會(huì)更靈活、更有效的使用內(nèi)存。

  在 nginx 的一個(gè) worker 里,所有請(qǐng)求共享一個(gè)Lua 解釋器或 LuaJIT 實(shí)例,即一個(gè) nginx worker,一個(gè) Lua 解釋器或 LuaJIT 實(shí)例。每個(gè)請(qǐng)求的上下文(context)是通過(guò)輕量級(jí)的 Lua 協(xié)程(coroutines)相互隔離的。

  加載的 Lua 模塊駐留在 nginx worker 進(jìn)程級(jí)別,這樣在負(fù)載很高的情況下,Lua 本身只是用了很低的內(nèi)存。

  由于此模塊是 nginx “http” 系統(tǒng)的插件,所以只能以 HTTP 協(xié)議族的方式(HTTP 0.9/1.0/1.1/2.0,WebSocket)與下游通信。如果想使用 TCP 通信,可以使用與 Lua API 兼容的 ngx_stream_lua

2. 使用場(chǎng)景

  • 使用 Lua 處理或混合 nginx 上游的各種輸出;
  • 在請(qǐng)求到達(dá) nginx 上游之前,使用 Lua 進(jìn)行復(fù)雜的訪問(wèn)控制,安全檢查;
  • 使用 Lua 操作請(qǐng)求的響應(yīng)頭;
  • ?從外部存儲(chǔ)(redis、memcached、mysql...)獲取信息來(lái)動(dòng)態(tài)決定訪問(wèn)哪一個(gè)上游;
  • ?以非阻塞的方式從存儲(chǔ)中獲取信息生成復(fù)雜的Web 應(yīng)用內(nèi)容
  • ?使用Lua 在 重定向階段(rewrite phase)進(jìn)行復(fù)雜的 URL 路由
  • ?使用 Lua 實(shí)現(xiàn) nginx 子請(qǐng)求或 location 模塊的高級(jí)緩存機(jī)制;
  • ?...

  ngx_lua 即提供了腳本的靈活性,又有與 C 語(yǔ)言可比肩的性能(CPU ,內(nèi)存)——需要啟用 LuaJIT2.x。

3. 與 nginx 的兼容性

 ngx_lua 模塊的最新版本兼容以下的 nginx:

  • 1.11.x (last tested: 1.11.2)
  • 1.10.x
  • 1.9.x (last tested: 1.9.15)
  • 1.8.x
  • 1.7.x (last tested: 1.7.10)
  • 1.6.x

4. 安裝

? 推薦使用 OpenResty releases 的發(fā)行版(整合了 nginx,ngx_lua ,LuaJIT 2.1 還有其他強(qiáng)大的 nginx 模塊 和 Lua 庫(kù))

4.1 Ubuntu 安裝 Openresty 的發(fā)行版

在 Ubuntu系統(tǒng)中添加 Openresty 的 APT 倉(cāng)庫(kù),以便于安裝或更新

# 導(dǎo)入 Openresty 的 GPG 密鑰: wget -qO - https://openresty.org/package/pubkey.gpg | sudo apt-key add -# 安裝 add-apt-repository 命令 # (之后可以刪除這個(gè)包以及對(duì)應(yīng)的關(guān)聯(lián)包) sudo apt-get -y install software-properties-common# 添加官方 official APT 倉(cāng)庫(kù): sudo add-apt-repository -y "deb http://openresty.org/package/ubuntu $(lsb_release -sc) main"# 更新 APT 索引: sudo apt-get update# 安裝 sudo apt-get install openresty#這個(gè)包同時(shí)也推薦安裝 openresty-opm 和 openresty-restydoc 包,所以后面兩個(gè)包會(huì)缺省安裝上。 如果不想自動(dòng)關(guān)聯(lián)安裝,可以用下面方法關(guān)閉自動(dòng)關(guān)聯(lián)安裝: #sudo apt-get install --no-install-recommends openresty

4.2 Debian Jessie 及以上

與 Ubuntu相似,注意不同點(diǎn) :

# 導(dǎo)入 GPG 密鑰:wget -qO - https://openresty.org/package/pubkey.gpg | sudo apt-key add -# 安裝 add-apt-repository 命令# (之后你可以刪除這個(gè)包以及對(duì)應(yīng)的關(guān)聯(lián)包)sudo apt-get -y install software-properties-common# 添加我們官方 official APT 倉(cāng)庫(kù): (與 Ubuntu 不同)sudo add-apt-repository -y "deb http://openresty.org/package/debian $(lsb_release -sc) openresty"# 更新 APT 索引:sudo apt-get update# 然后就可以像下面這樣安裝軟件包,比如 openresty:sudo apt-get install openresty# 這個(gè)包同時(shí)也推薦安裝 openresty-opm 和 openresty-restydoc 包,所以后面兩個(gè)包會(huì)缺省安裝上。 如果你不想自動(dòng)關(guān)聯(lián)安裝,可以用下面方法關(guān)閉自動(dòng)關(guān)聯(lián)安裝:sudo apt-get install --no-install-recommends openresty

4.3 Debian Wheezy

# 導(dǎo)入 GPG 密鑰:wget -qO - https://openresty.org/package/pubkey.gpg | sudo apt-key add -# 安裝 add-apt-repository 命令:(與其他版本不同)# (之后你可以刪除這個(gè)包以及對(duì)應(yīng)的關(guān)聯(lián)包)sudo apt-get -y install python-software-properties# 打開 wheezy-backports 倉(cāng)庫(kù):sudo add-apt-repository -y "deb http://ftp.debian.org/debian wheezy-backports main"# 添加官方 APT 倉(cāng)庫(kù)sudo add-apt-repository -y "deb http://openresty.org/package/debian $(lsb_release -sc) openresty"# 更新 APT 索引:sudo apt-get update# 然后就可以像下面這樣安裝包了,比如裝 openresty:sudo apt-get install openresty# 這個(gè)包同時(shí)也推薦安裝 openresty-opm 和 openresty-restydoc 包,所以后面兩個(gè)包會(huì)缺省安裝上。 如果你不想自動(dòng)關(guān)聯(lián)安裝,可以用下面方法關(guān)閉自動(dòng)關(guān)聯(lián)安裝:sudo apt-get install --no-install-recommends openresty

4.4 Centos

# 下面的命令就可以添加倉(cāng)庫(kù):sudo yum install yum-utilssudo yum-config-manager --add-repo https://openresty.org/package/centos/openresty.repo# 然后就可以像下面這樣安裝軟件包,比如 openresty:sudo yum install openresty# 如果你想安裝命令行工具 resty,那么可以像下面這樣安裝 openresty-resty 包:sudo yum install openresty-resty# 命令行工具 opm 在 openresty-opm 包里,而 restydoc 工具在 openresty-doc 包里頭。# 列出所有 openresty 倉(cāng)庫(kù)里頭的軟件包:sudo yum --disablerepo="*" --enablerepo="openresty" list available

4.5 其他版本操作系統(tǒng)

參考官方文檔

轉(zhuǎn)載于:https://www.cnblogs.com/kutim/p/7526211.html

總結(jié)

以上是生活随笔為你收集整理的1. nginx扩展——ngx_lua 模块简介、安装的全部?jī)?nèi)容,希望文章能夠幫你解決所遇到的問(wèn)題。

如果覺(jué)得生活随笔網(wǎng)站內(nèi)容還不錯(cuò),歡迎將生活随笔推薦給好友。