国产av日韩一区二区三区精品,成人性爱视频在线观看,国产,欧美,日韩,一区,www.成色av久久成人,2222eeee成人天堂

首頁 後端開發(fā) php教程 nginx教學(xué)

nginx教學(xué)

Aug 08, 2016 am 09:23 AM
lua nginx quot shell

Nginx與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。

shell> wget http://luajit.org/download/LuaJIT-.tar.gz shell> tar zxvf LuaJIT-.tar.gz shell> cd LuaJIT- shell> make shell> make install

因為安裝在缺省路徑,所以LuaJIT對應(yīng)的lib,include都在/usr/local目錄裡。

shell> export LUAJIT_LIB=/usr/local/lib shell> export LUAJIT_INC=/usr/local/include/luajit-

下面就可以編譯Nginx了:

shell> wget http://nginx.org/download/nginx-.tar.gz shell> tar zxvf nginx-.tar.gz shell> cd nginx- shell> ./configure --add-module=/path/to/ngx_lua \ --add-module=/path/to/ngx_devel_kit shell> make shell> make install

試著啟動一下Nginx看看,如果你運氣不好的話,可能會遇到如下錯誤:

cannot open shared object file: No such

dicannot open shared object file: No such filefileorrectory

這是神馬情況?可以用ldd指令來看看:

shell> ldd /path/to/nginx libluajit-.so => not found

此類問題通常使用ldconfig指令就能解決:

shell> echo "/usr/local/lib" > /etc/ld.so.conf.d/usr_local_lib.conf shell> ldconfig

再試著啟動Nginx看看,應(yīng)該就OK了。

應(yīng)用

我們先用一個簡單的程式來暖暖場:把下面的程式碼加入到Nginx的設(shè)定檔nginx.conf,並重啟Nginx,然後瀏覽,就能看到效果了。

location /lua { set $test "hello, world."; content_by_lua ' ngx.header.content_type = "text/plain"; ngx.say(ngx.var.test); '; }

在深入學(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)容如下:

{ "host": "", "port": "" }

然後,我們建立一個解析設(shè)定檔的腳本init.lua,其中用到了Lua CJSON模組:

local cjson = require "cjson"; local config = ngx.shared.config; local file = io.open("config.json", "r"); local content = cjson.decode(file:read("*all")); file:close(); for name, value in pairs(content) do config:set(name, value); end

說明:程式碼裡用到了共享內(nèi)存,這樣就不必每次請求都解析一遍設(shè)定檔了。

接著,我們建立一個渲染內(nèi)容的腳本content.lua,用到了Resty Redis模組:

ngx.header.content_type = "text/plain"; local redis = require "resty.redis"; local config = ngx.shared.config; local instance = redis:new(); local host = config:get("host"); local port = config:get("port"); local ok, err = instance:connect(host, port); if not ok then ngx.log(ngx.ERR, err); ngx.exit(ngx.HTTP_SERVICE_UNAVAILABLE); end instance:set("name", "laowang"); local name = instance:get("name") instance:close(); ngx.say("name: ", name);

說明:建議把Resty Redis模組放到vendor目錄下,稍後在Nginx中統(tǒng)一設(shè)定。

最後,我們需要在Nginx設(shè)定檔裡設(shè)定一下:

lua_shared_dict config 1m; lua_package_path "/path/to/vendor/?.lua;;"; init_by_lua_file /path/to/init.lua; server { lua_code_cache off; location /lua { content_by_lua_file /path/to/content.lua; } ... }

說明:為了方便調(diào)試,我關(guān)閉了lua_code_cache,如果是生產(chǎn)環(huán)境,應(yīng)該開啟它。

另外,安裝CJSON的時候,需要注意Makefile檔案裡頭檔的路徑,缺省是:

PREFIX = /usr/local LUA_INCLUDE_DIR = $(PREFIX)/include

如果安裝的是LuaJIT的話,最好把頭檔拷貝到對應(yīng)目錄:

cp /usr/local/include/luajit-/* /usr/local/include/

我最近參與的一個項目,提供了一些用於Web輪詢的接口,都是用Nginx+Lua實現(xiàn)的,雖然總共只有十幾臺伺服器,但是每天可以提供幾十億次的請求量,賊拉拉的強(qiáng)。

最後,讓我引用某位屌絲的語錄做結(jié)束語吧:Lua,未婚男性程式設(shè)計師的最愛。

此條目由老王發(fā)表在Technical分類目錄,並貼了Lua、Nginx標(biāo)籤。將固定連結(jié)加入收藏夾。

NGINX與LUA》上有29條評論


以上就介紹了nginx教程,包含了方面的內(nèi)容,希望對PHP教程有興趣的朋友有幫助。

本網(wǎng)站聲明
本文內(nèi)容由網(wǎng)友自願投稿,版權(quán)歸原作者所有。本站不承擔(dān)相應(yīng)的法律責(zé)任。如發(fā)現(xiàn)涉嫌抄襲或侵權(quán)的內(nèi)容,請聯(lián)絡(luò)admin@php.cn

熱AI工具

Undress AI Tool

Undress AI Tool

免費脫衣圖片

Undresser.AI Undress

Undresser.AI Undress

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

AI Clothes Remover

AI Clothes Remover

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

Clothoff.io

Clothoff.io

AI脫衣器

Video Face Swap

Video Face Swap

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

熱工具

記事本++7.3.1

記事本++7.3.1

好用且免費的程式碼編輯器

SublimeText3漢化版

SublimeText3漢化版

中文版,非常好用

禪工作室 13.0.1

禪工作室 13.0.1

強(qiáng)大的PHP整合開發(fā)環(huán)境

Dreamweaver CS6

Dreamweaver CS6

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

SublimeText3 Mac版

SublimeText3 Mac版

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

nginx在windows中怎麼配置 nginx在windows中怎麼配置 Apr 14, 2025 pm 12:57 PM

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

docker怎麼啟動容器 docker怎麼啟動容器 Apr 15, 2025 pm 12:27 PM

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

docker容器名稱怎麼查 docker容器名稱怎麼查 Apr 15, 2025 pm 12:21 PM

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

怎麼查看nginx是否啟動 怎麼查看nginx是否啟動 Apr 14, 2025 pm 01:03 PM

確認(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)建容器 docker怎麼創(chuàng)建容器 Apr 15, 2025 pm 12:18 PM

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

nginx怎麼啟動 nginx怎麼啟動 Apr 14, 2025 pm 01:06 PM

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

在Nginx和Apache之間進(jìn)行選擇:適合您的需求 在Nginx和Apache之間進(jìn)行選擇:適合您的需求 Apr 15, 2025 am 12:04 AM

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

centos下phpstorm性能優(yōu)化方法 centos下phpstorm性能優(yōu)化方法 Apr 14, 2025 pm 05:30 PM

提升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ò)展,顯

See all articles