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命令來(lái)看看:
此類問題通常使用ldconfig命令就能解決:
再試著啟動(dòng)Nginx看看,應(yīng)該就OK了。
應(yīng)用
我們先用一個(gè)簡(jiǎn)單的程序來(lái)暖暖場(chǎng):把下面的代碼加入到Nginx的配置文件nginx.conf,并重啟Nginx,然后瀏覽,就能看到效果了。
在深入學(xué)習(xí)ngx_lua之前,建議大家仔細(xì)閱讀一遍春哥寫的Nginx教程。
這里我就說(shuō)關(guān)鍵的:Nginx配置文件所使用的語(yǔ)言本質(zhì)上是『聲明性的』,而非『過程性的』。Nginx處理請(qǐng)求的時(shí)候,指令的執(zhí)行并不是由定義指令時(shí)的物理順序來(lái)決定的,而是取決于指令所屬的階段,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模塊:
說(shuō)明:代碼里用到了共享內(nèi)存,這樣就不必每次請(qǐng)求都解析一遍配置文件了。
接著,我們創(chuàng)建一個(gè)渲染內(nèi)容的腳本content.lua,用到了Resty Redis模塊:
說(shuō)明:建議把Resty Redis模塊放到vendor目錄下,稍后在Nginx中統(tǒng)一設(shè)置。
最后,我們需要在Nginx配置文件里設(shè)置一下:
說(shuō)明:為了方便調(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教程有興趣的朋友有所幫助。

Outils d'IA chauds

Undress AI Tool
Images de déshabillage gratuites

Undresser.AI Undress
Application basée sur l'IA pour créer des photos de nu réalistes

AI Clothes Remover
Outil d'IA en ligne pour supprimer les vêtements des photos.

Clothoff.io
Dissolvant de vêtements AI

Video Face Swap
échangez les visages dans n'importe quelle vidéo sans effort grace à notre outil d'échange de visage AI entièrement gratuit?!

Article chaud

Outils chauds

Bloc-notes++7.3.1
éditeur de code facile à utiliser et gratuit

SublimeText3 version chinoise
Version chinoise, très simple à utiliser

Envoyer Studio 13.0.1
Puissant environnement de développement intégré PHP

Dreamweaver CS6
Outils de développement Web visuel

SublimeText3 version Mac
Logiciel d'édition de code au niveau de Dieu (SublimeText3)

Sujets chauds

Comment configurer Nginx dans Windows? Installez Nginx et créez une configuration d'h?te virtuelle. Modifiez le fichier de configuration principale et incluez la configuration de l'h?te virtuel. Démarrer ou recharger nginx. Testez la configuration et affichez le site Web. Activer sélectivement SSL et configurer les certificats SSL. Définissez sélectivement le pare-feu pour permettre le trafic Port 80 et 443.

étapes de démarrage du conteneur Docker: Tirez l'image du conteneur: Exécutez "Docker Pull [Mirror Name]". Créer un conteneur: utilisez "Docker Create [Options] [Mirror Name] [Commandes et paramètres]". Démarrez le conteneur: exécutez "docker start [nom de conteneur ou id]". Vérifiez l'état du conteneur: vérifiez que le conteneur s'exécute avec "Docker PS".

Vous pouvez interroger le nom du conteneur Docker en suivant les étapes: répertorier tous les conteneurs (Docker PS). Filtrez la liste des conteneurs (à l'aide de la commande grep). Obtient le nom du conteneur (situé dans la colonne "Noms").

Comment confirmer si Nginx est démarré: 1. Utilisez la ligne de commande: SystemCTl Status Nginx (Linux / Unix), netStat -ano | Findstr 80 (Windows); 2. Vérifiez si le port 80 est ouvert; 3. Vérifiez le message de démarrage NGINX dans le journal système; 4. Utilisez des outils tiers, tels que Nagios, Zabbix et Icinga.

Créer un conteneur dans Docker: 1. Tirez l'image: docker pull [Nom du miroir] 2. Créer un conteneur: docker run [Options] [Nom du miroir] [Commande] 3. Démarrez le conteneur: docker start [Nom du conteneur]

Question: Comment démarrer Nginx? Réponse: Installez la vérification Nginx Nginx Nginx nginx est Nginx à démarrer Explorer d'autres options de démarrage Démarrer automatiquement Nginx

Nginx et Apache ont leurs propres avantages et inconvénients et conviennent à différents scénarios. 1.Nginx convient aux scénarios élevés de la concurrence et de la consommation de ressources faibles. 2. Apache convient aux scénarios où des configurations complexes et des modules riches sont nécessaires. En comparant leurs fonctionnalités principales, leurs différences de performances et leurs meilleures pratiques, vous pouvez vous aider à choisir le logiciel du serveur qui convient le mieux à vos besoins.

Conseils pratiques pour améliorer les performances de PHPStorm dans les systèmes CentOS Cet article fournit une variété de méthodes pour vous aider à optimiser les performances de PHPStorm dans les systèmes CentOS et ainsi améliorer l'efficacité du développement. Avant de mettre en ?uvre des mesures d'optimisation, assurez-vous de sauvegarder des données importantes et de vérifier les résultats dans l'environnement de test. 1. Optimisation au niveau du système et Streamline Services système: Désactivez les services système et les démons inutiles pour réduire l'utilisation des ressources système. Mode sans interface: le passage au mode sans interface peut économiser considérablement les ressources si vous n'avez pas besoin d'une interface graphique. Désinstaller le logiciel redondant: supprimer les packages et services logiciels qui ne sont plus utilisés et libérés des ressources système. 2.
