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

熱AI工具

Undress AI Tool
免費(fèi)脫衣服圖片

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

AI Clothes Remover
用于從照片中去除衣服的在線人工智能工具。

Clothoff.io
AI脫衣機(jī)

Video Face Swap
使用我們完全免費(fèi)的人工智能換臉工具輕松在任何視頻中換臉!

熱門文章

熱工具

記事本++7.3.1
好用且免費(fèi)的代碼編輯器

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

禪工作室 13.0.1
功能強(qiáng)大的PHP集成開發(fā)環(huán)境

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

SublimeText3 Mac版
神級(jí)代碼編輯軟件(SublimeText3)

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

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

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

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

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

問題:如何啟動(dòng) Nginx?答案:安裝 Nginx啟動(dòng) Nginx驗(yàn)證 Nginx 是否已啟動(dòng)探索其他啟動(dòng)選項(xiàng)自動(dòng)啟動(dòng) Nginx

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

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