nginx教學(xué)
Aug 08, 2016 am 09:23 AMNginx與Lua
火雲(yún)邪神語錄:天下武功,無堅不破,唯快不破! Nginx的看家本領(lǐng)就是速度,Lua的拿手好戲亦是速度,這兩者的結(jié)合在速度上無疑有基因上的優(yōu)勢。
最先將Nginx,Lua組合在一起的是OpenResty,它有一個ngx_lua模組,將Lua嵌入到了Nginx裡面;隨後Tengine也包含了ngx_lua模組。至於二者的差別:OpenResty是Nginx的Bundle;而Tengine則是Nginx的Fork。值得一提的是,OpenResty和Tengine都是國人自己創(chuàng)造的項目,前者主要由春哥和曉哲開發(fā),後者主要由淘寶打理。
至於OpenResty和Tengine孰優(yōu)孰劣,留給大家自己判斷,如下資料可供參考:
- ngx_openresty: an Nginx ecosystem glued by Lua
- 淘寶網(wǎng)Nginx應(yīng)用、客製化與開發(fā)實戰(zhàn)
推薦看看春哥在Tech-Club上關(guān)於『由Lua黏合的Nginx生態(tài)環(huán)境』的演講實錄,有料!
安裝
需要最新版的Nginx,LuaJIT,ngx_devel_kit,ngx_lua等安裝檔。
安裝Lua或LuaJIT都是可以的,但是出於效率的考慮,建議安裝LuaJIT。
因為安裝在缺省路徑,所以LuaJIT對應(yīng)的lib,include都在/usr/local目錄裡。
下面就可以編譯Nginx了:
試著啟動一下Nginx看看,如果你運氣不好的話,可能會遇到如下錯誤:
cannot open shared object file: No such
dicannot open shared object file: No such filefileorrectory這是神馬情況?可以用ldd指令來看看:
此類問題通常使用ldconfig指令就能解決:
再試著啟動Nginx看看,應(yīng)該就OK了。
應(yīng)用
我們先用一個簡單的程式來暖暖場:把下面的程式碼加入到Nginx的設(shè)定檔nginx.conf,並重啟Nginx,然後瀏覽,就能看到效果了。
在深入學(xué)習(xí)ngx_lua之前,建議大家仔細(xì)閱讀一遍春哥寫的Nginx教學(xué)。
這裡我就說關(guān)鍵的:Nginx設(shè)定檔所使用的語言本質(zhì)上是『聲明性的』,而非『過程性的』。 Nginx處理請求的時候,指令的執(zhí)行並不是由定義指令時的物理順序來決定的,而是取決於指令所屬的階段,Nginx常用的階段按先後順序有:rewrite階段,access階段,content階段等等。示範(fàn)程式碼中的set指令屬於rewrite階段,content_by_lua指令屬於content階段,如果試著把兩個指令的順序交換一下,會發(fā)現(xiàn)程式依然能夠正常運作。
下面我們試著結(jié)合Redis寫個比較實戰(zhàn)一點的例子。
首先,我們需要建立一個Redis設(shè)定檔config.json,內(nèi)容如下:
然後,我們建立一個解析設(shè)定檔的腳本init.lua,其中用到了Lua CJSON模組:
說明:程式碼裡用到了共享內(nèi)存,這樣就不必每次請求都解析一遍設(shè)定檔了。
接著,我們建立一個渲染內(nèi)容的腳本content.lua,用到了Resty Redis模組:
說明:建議把Resty Redis模組放到vendor目錄下,稍後在Nginx中統(tǒng)一設(shè)定。
最後,我們需要在Nginx設(shè)定檔裡設(shè)定一下:
說明:為了方便調(diào)試,我關(guān)閉了lua_code_cache,如果是生產(chǎn)環(huán)境,應(yīng)該開啟它。
另外,安裝CJSON的時候,需要注意Makefile檔案裡頭檔的路徑,缺省是:
如果安裝的是LuaJIT的話,最好把頭檔拷貝到對應(yīng)目錄:
…
我最近參與的一個項目,提供了一些用於Web輪詢的接口,都是用Nginx+Lua實現(xiàn)的,雖然總共只有十幾臺伺服器,但是每天可以提供幾十億次的請求量,賊拉拉的強(qiáng)。
最後,讓我引用某位屌絲的語錄做結(jié)束語吧:Lua,未婚男性程式設(shè)計師的最愛。
此條目由老王發(fā)表在Technical分類目錄,並貼了Lua、Nginx標(biāo)籤。將固定連結(jié)加入收藏夾。《NGINX與LUA》上有29條評論
以上就介紹了nginx教程,包含了方面的內(nèi)容,希望對PHP教程有興趣的朋友有幫助。

熱AI工具

Undress AI Tool
免費脫衣圖片

Undresser.AI Undress
人工智慧驅(qū)動的應(yīng)用程序,用於創(chuàng)建逼真的裸體照片

AI Clothes Remover
用於從照片中去除衣服的線上人工智慧工具。

Clothoff.io
AI脫衣器

Video Face Swap
使用我們完全免費的人工智慧換臉工具,輕鬆在任何影片中換臉!

熱門文章

熱工具

記事本++7.3.1
好用且免費的程式碼編輯器

SublimeText3漢化版
中文版,非常好用

禪工作室 13.0.1
強(qiáng)大的PHP整合開發(fā)環(huán)境

Dreamweaver CS6
視覺化網(wǎng)頁開發(fā)工具

SublimeText3 Mac版
神級程式碼編輯軟體(SublimeText3)

熱門話題

如何在 Windows 中配置 Nginx?安裝 Nginx 並創(chuàng)建虛擬主機(jī)配置。修改主配置文件並包含虛擬主機(jī)配置。啟動或重新加載 Nginx。測試配置並查看網(wǎng)站。選擇性啟用 SSL 並配置 SSL 證書。選擇性設(shè)置防火牆允許 80 和 443 端口流量。

Docker 容器啟動步驟:拉取容器鏡像:運行 "docker pull [鏡像名稱]"。創(chuàng)建容器:使用 "docker create [選項] [鏡像名稱] [命令和參數(shù)]"。啟動容器:執(zhí)行 "docker start [容器名稱或 ID]"。檢查容器狀態(tài):通過 "docker ps" 驗證容器是否正在運行。

可以通過以下步驟查詢 Docker 容器名稱:列出所有容器(docker ps)。篩選容器列表(使用 grep 命令)。獲取容器名稱(位於 "NAMES" 列中)。

確認(rèn) Nginx 是否啟動的方法:1. 使用命令行:systemctl status nginx(Linux/Unix)、netstat -ano | findstr 80(Windows);2. 檢查端口 80 是否開放;3. 查看系統(tǒng)日誌中 Nginx 啟動消息;4. 使用第三方工具,如 Nagios、Zabbix、Icinga。

在 Docker 中創(chuàng)建容器: 1. 拉取鏡像: docker pull [鏡像名] 2. 創(chuàng)建容器: docker run [選項] [鏡像名] [命令] 3. 啟動容器: docker start [容器名]

問題:如何啟動 Nginx?答案:安裝 Nginx啟動 Nginx驗證 Nginx 是否已啟動探索其他啟動選項自動啟動 Nginx

NGINX和Apache各有優(yōu)劣,適合不同場景。 1.NGINX適合高並發(fā)和低資源消耗場景。 2.Apache適合需要復(fù)雜配置和豐富模塊的場景。通過比較它們的核心特性、性能差異和最佳實踐,可以幫助你選擇最適合需求的服務(wù)器軟件。

提升CentOS系統(tǒng)下PhpStorm性能的實用技巧本文提供多種方法,幫助您優(yōu)化CentOS系統(tǒng)中PhpStorm的性能,從而提高開發(fā)效率。在實施任何優(yōu)化措施前,請務(wù)必備份重要數(shù)據(jù)并在測試環(huán)境中驗證效果。一、系統(tǒng)級優(yōu)化精簡系統(tǒng)服務(wù):禁用不必要的系統(tǒng)服務(wù)和守護(hù)進(jìn)程,減少系統(tǒng)資源占用。無界面模式:如果不需要圖形界面,切換到無界面模式可顯著節(jié)省資源。卸載冗余軟件:移除不再使用的軟件包和服務(wù),釋放系統(tǒng)資源。二、PHP配置優(yōu)化啟用OPcache:安裝并配置OPcache擴(kuò)展,顯
