当前位置:网站首页>Openresty ngx Lua Execution stage
Openresty ngx Lua Execution stage
2022-07-05 02:18:00 【O Guatian Li Xia O】
openresty ngx_luaPhase de mise en œuvre
nginx httpPhase de mise en œuvre
nginx httpPhase de mise en œuvre
# ngx_http_core_module.h
typedef enum {
NGX_HTTP_POST_READ_PHASE = 0,
NGX_HTTP_SERVER_REWRITE_PHASE,
NGX_HTTP_FIND_CONFIG_PHASE,
NGX_HTTP_REWRITE_PHASE,
NGX_HTTP_POST_REWRITE_PHASE,
NGX_HTTP_PREACCESS_PHASE,
NGX_HTTP_ACCESS_PHASE,
NGX_HTTP_POST_ACCESS_PHASE,
NGX_HTTP_PRECONTENT_PHASE,
NGX_HTTP_CONTENT_PHASE,
NGX_HTTP_LOG_PHASE
} ngx_http_phases;
Description de la phase de mise en œuvre
NGX_HTTP_POST_READ_PHASE = 0,
* Accepter et lire la demande
NGX_HTTP_SERVER_REWRITE_PHASE,
* ModifierurlPhase, Il y a généralement une redirection 、Paramètres des variables
NGX_HTTP_FIND_CONFIG_PHASE,
* TrouverurlConfiguration correspondante,Si ça correspondlocation
NGX_HTTP_REWRITE_PHASE,
* Correspond àlocationAprès, Peut entrer à nouveau NGX_HTTP_SERVER_REWRITE_PHASE
NGX_HTTP_POST_REWRITE_PHASE,
* Vérifiezurl Si la phase a été exécutée 4,Si elle est exécutée, Retour à la phase 3
* Nombre maximal d'inspections 10,Si vous dépassez la limite, une erreur sera signalée
NGX_HTTP_PREACCESS_PHASE,
* Demande de limitation de vitesse des ressources, etc.
NGX_HTTP_ACCESS_PHASE,
* Contrôle d'accès,En cas de limitationipAccès à
NGX_HTTP_POST_ACCESS_PHASE,
* ValidationNGX_HTTP_ACCESS_PHASE(Contrôle d'accès)Résultats,Continuer si elle est acceptée
NGX_HTTP_PRECONTENT_PHASE,
* try_files En vigueur au moment de la directive
NGX_HTTP_CONTENT_PHASE,
* TraitementhttpContenu de la demande, Nécessite généralement une interaction avec l'application back - end
NGX_HTTP_LOG_PHASE
* Sortie du Journal
ngx_lua Phase de mise en œuvre
Ordre d'exécution
init_by_lua_block
init_worker_by_lua_block
set_by_lua_block
rewrite_by_lua_block
access_by_lua_block
content_by_lua_block
header_filter_by_lua_block
body_filter_by_lua_block
log_filter_by_lua_block
init_by_lua_block:nginxInitialisation、Exécuter au redémarrage,InhttpConfiguration dans le module
http {
include mime.types;
default_type application/octet-stream;
init_by_lua_block {
local uuid = require 'resty.jit-uuid';
uuid.seed();
}
...
}
init_by_lua_file:Rôle etinit_by_lua_blockMême chose., Bloc de code enregistré dans le fichier
http {
include mime.types;
default_type application/octet-stream;
init_worker_by_lua_file /usr/local/nginx/conf/init.lua
...
}
# /usr/local/nginx/conf/init.lua Contenu du fichier
local uuid = require 'resty.jit-uuid';
uuid.seed();
init_worker_by_lua_block:masterAprès le démarrage du processus, Exécuter le bloc de code associé ,InhttpConfiguration dans le module
# Peut être utilisé pour effectuer des tâches programmées 、 Bilan de santé de l'arrière - plan
http {
include mime.types;
default_type application/octet-stream;
init_worker_by_lua_block {
...
}
...
}
set_by_lua_block:Exécuter le bloc de code,Et renvoie les résultats,Inserver、location Paramètres dans le bloc d'instruction
Format syntaxique:set_by_lua_block $result {...}
* Cette commande est une commande de blocage , Le bloc d'instruction exécuté est aussi court que possible 、Allez,Évitez de prendre trop de temps
* Désactiver dans le bloc d'instruction :ngx.say()、ngx.exit()、ngx.sleep()Attendez les ordres.
server {
listen 80;
server_name localhost;
set $a "";
set_by_lua_block $a {
return "1";
}
location / {
root /usr/local/openresty/nginx/html;
index index.html index.htm;
}
...
}
rewrite_by_lua_block: Exécution de la phase de réécriture ,Oui.http、server、locationParamètres intermédiaires
Format syntaxique:rewrite_by_lua_block {...}
* Le bloc d'instruction s'exécute à la fin ,Peut passerrewrite_by_lua_no_postpone(Par défautoff)Modifier l'ordre d'exécution
* Tous lesngx api
# aLa valeur de2
server {
listen 80;
server_name localhost;
set $a "1";
rewrite_by_lua_block {
ngx_var_a="2";
}
set $a "3"
location / {
root /usr/local/openresty/nginx/html;
index index.html index.htm;
}
...
}
# httpConfiguration de la phase:rewrite_by_lua_no_postpone on
# aLa valeur de3
server {
listen 80;
server_name localhost;
set $a "1";
rewrite_by_lua_block {
ngx_var_a="2";
}
set $a "3"
location / {
root /usr/local/openresty/nginx/html;
index index.html index.htm;
}
...
}
access_by_lua_block:access Bloc d'instruction d'exécution de phase (Vérification des droits、Liste noire et blanche),Inhttp、server、locationParamètres intermédiaires
Format syntaxique:access_by_lua_block {...}
* Le bloc d'instruction s'exécute à la fin ,Peut passeraccess_by_lua_no_postpone(Par défautoff)Modifier l'ordre d'exécution
* Tous lesngx api
* Application: Conserver la liste en noir et blanc dans redis、En mémoire partagée, Définir dynamiquement la liste noire et blanche
content_by_lua_block: Exécution de la phase de traitement du contenu , Définir le contenu de sortie ,InlocationParamètres intermédiaires
Format syntaxique:content_by_lua_block {...}
* Tous lesngx api
* S'il est utilisé en même temps que d'autres déclarations de phase d'exécution de contenu ,content_by_lua_blockPeut ne pas être exécuté
location / {
content_by_lua_block {
ngx.say("hello gtlx");
}
echo "test" #Seulement la sortietest,Pas de sortiehello gtlx
}
content_by_lua_file:Aveccontent_by_lua_blockMême chose., Enregistrer l'instruction dans le fichier ,InlocationParamètres intermédiaires
Format syntaxique:content_by_lua_file file
* Tous lesngx api
location / {
content_by_lua_file /usr/local/openresty/file/test.lua
}
# Documentation:/usr/local/openresty/file/test.lua
hello gtlx
balancer_by_lua_block: Exécution de la phase de traitement du contenu ,InupstreamUtilisé dans l'énoncé
Format syntaxique:balancer_by_lua_block {...}
* upstreamUtilisationipPourbalancer_by_lua_block Adresse définie dans
* Désactivéapi:cosockets、light threads
upstream web-server {
server 172.18.0.2 #Sera ignoréserverSetipAdresse
balancer_by_lua_block {
... # Ça marche. ipAdresse
}
}
header_filter_by_lua_block: Phase de réponse ajouter 、 Supprimer l'en - tête de réponse ,Inhttp、server、locationParamètres intermédiaires
Format syntaxique:header_filter_by_lua_block {...}
* Désactivéapi:ngx.say()、ngx.redirect()、ngx.exec()Attendez.
# Ajouter un en - tête de réponse
location {
header_filter_by_lua_block {
ngx.header.test="hello gtlx"
}
echo "hello"
}
body_filter_by_lua_block: Phase de réponse modifier le corps de réponse ,Inhttp、server、locationParamètres intermédiaires
Format syntaxique:body_filter_by_lua_block {...}
* Désactivéapi:ngx.say()、ngx.redirect()、ngx.exec()Attendez.
# Convertir les données correspondantes en majuscules (ngx.arg[1]Obtenir les données de réponse,ngx.arg[2] Fin de la réponse )
# Produits:HELLO
location {
body_filter_by_lua_block {
ngx.arg[1] = string.upper(ngx.arg[1]);
}
echo "hello"
}
log_by_lua_block:Journal de sortie,Oui.http、server、locationParamètres intermédiaires
Format syntaxique:log_filter_by_lua_block {...}
* Inaccess_logPrécédemment appliqué, Ne remplace pas le courant access_logLog
* Désactivéapi:ngx.say()、ngx.redirect()、ngx.exec()Attendez.
location {
log_filter_by_lua_block {
ngx.log("hello gtlx")
}
echo "hello"
}
边栏推荐
- Abacus mental arithmetic test
- How to make a cool ink screen electronic clock?
- Last week's hot review (2.7-2.13)
- 如何搭建一支搞垮公司的技术团队?
- Restful Fast Request 2022.2.1发布,支持cURL导入
- Start the remedial work. Print the contents of the array using the pointer
- Yolov5 model training and detection
- Luo Gu Pardon prisoners of war
- Go RPC call
- Three properties that a good homomorphic encryption should satisfy
猜你喜欢
[download white paper] does your customer relationship management (CRM) really "manage" customers?
如何搭建一支搞垮公司的技術團隊?
力扣剑指offer——二叉树篇
STM32 series - serial port UART software pin internal pull-up or external resistance pull-up - cause problem search
runc hang 导致 Kubernetes 节点 NotReady
Yyds dry inventory swagger positioning problem ⽅ formula
Bert fine tuning skills experiment
PowerShell: use PowerShell behind the proxy server
. Net starts again happy 20th birthday
Write a thread pool by hand, and take you to learn the implementation principle of ThreadPoolExecutor thread pool
随机推荐
Application and Optimization Practice of redis in vivo push platform
Application and development trend of image recognition technology
Outlook:总是提示输入用户密码
[機緣參悟-38]:鬼穀子-第五飛箝篇 - 警示之一:有一種殺稱為“捧殺”
Comment mettre en place une équipe technique pour détruire l'entreprise?
Yolov5 model training and detection
The perfect car for successful people: BMW X7! Superior performance, excellent comfort and safety
Timescaledb 2.5.2 release, time series database based on PostgreSQL
Matrixone 0.2.0 is released, and the fastest SQL computing engine is coming
Use the difference between "Chmod a + X" and "Chmod 755" [closed] - difference between using "Chmod a + X" and "Chmod 755" [closed]
Numpy library introductory tutorial: basic knowledge summary
RichView TRVUnits 图像显示单位
[机缘参悟-38]:鬼谷子-第五飞箝篇 - 警示之一:有一种杀称为“捧杀”
ICSI 311 Parser
STM32 series - serial port UART software pin internal pull-up or external resistance pull-up - cause problem search
R语言用logistic逻辑回归和AFRIMA、ARIMA时间序列模型预测世界人口
Asynchronous and promise
Unpool(nn.MaxUnpool2d)
Action News
Visual studio 2019 set transparent background (fool teaching)