Maison  >  Article  >  développement back-end  >  Ajouter le journal de réponse demandé au journal nginx

Ajouter le journal de réponse demandé au journal nginx

不言
不言original
2018-05-05 09:49:542631parcourir

Cet article présente principalement le journal des réponses d'ajout de requêtes dans le journal nginx. Il est très bon et a une valeur de référence. Les amis qui en ont besoin peuvent s'y référer

Puisque cette fonction n'est pas incluse dans le build. -en fonction de nginx, il est nécessaire d'installer le module tiers ngx_lua Puisque ce module nécessite la langue Lua, vous devez installer le pack de langue Lua correspondant

1. 🎜>

# cd /usr/local/src
# wget http://luajit.org/download/LuaJIT-2.0.2.tar.gz
# tar -xzvf LuaJIT-2.0.2.tar.gz
# cd LuaJIT-2.0.2
# make

Le contenu suivant apparaît, indiquant une compilation réussie

OK  Successfully built LuaJIT
make[1]: Leaving directory `/usr/local/src/LuaJIT-2.0.2/src'
==== Successfully built LuaJIT 2.0.2 ====
# make install

Le contenu suivant apparaît, indiquant une installation réussie

= === LuaJIT 2.0.2 installé avec succès sur /usr/local ====

2. Téléchargez et préparez nginx. module lua

# cd /usr/local/src
# wget https://github.com/chaoslawful/lua-nginx-module/archive/v0.8.6.tar.gz
# tar -xzvf v0.8.6

3. Installer nginx

# cd /usr/local/src/
# wget http://nginx.org/download/nginx-1.4.2.tar.gz
# tar -xzvf nginx-1.4.2.tar.gz
# cd nginx-1.4.2
//先导入环境变量,告诉nginx去哪里找luajit
# export LUAJIT_LIB=/usr/local/lib
# export LUAJIT_INC=/usr/local/include/luajit-2.0
# ./configure --prefix=/usr/local/nginx-1.4.2 --add-module=../lua-nginx-module-0.8.6
# make -j2
# make install

4. Testez si l'installation a réussi

# cd /usr/local/nginx-1.4.2/conf/
# vi nginx.conf

Méthode de commande Lua

Ajoutez une localisation dans le serveur

location /hello {
   default_type 'text/plain';
   content_by_lua 'ngx.say("hello, lua")';
  }

Puis démarrez nginx

# cd /usr/local/nginx-1.4.2/sbin
# ./nginx

Accès au navigateur :

http://127.0.0.1/ bonjour

affiche : bonjour, lua

Remarque :

1. Notez que le répertoire d'installation de chaque module ne peut pas apparaître. Erreur

2 Si vous avez déjà installé nginx via apt-get, vous devez d'abord supprimer nginx, car le logiciel. téléchargé de cette manière ne peut pas être compilé

3.

Voici l'explication L'installation tierce est réussie,

5. 🎜>

http {
 log_format mylog 'response_body:$resp_body';

 server {
  #记录nginx请求返回值
  lua_need_request_body on;
  set $resp_body "";
  body_filter_by_lua '
   local resp_body = string.sub(ngx.arg[1], 1, 1000)
   ngx.ctx.buffered = (ngx.ctx.buffered or "") .. resp_body
   if ngx.arg[2] then
    ngx.var.resp_body = ngx.ctx.buffered
   end
  ';
     
  location / {
   proxy_pass http://127.0.0.1:5000;
   access_log /var/log/nginx/access.log mylog;
   }
 }
}

La réponse est ajoutée avec succès à ce stade du journal.

Si vous connaissez le langage Lua, vous pouvez modifier le code suivant pour mieux répondre à vos exigences.

  body_filter_by_lua '
   local resp_body = string.sub(ngx.arg[1], 1, 1000)
   ngx.ctx.buffered = (ngx.ctx.buffered or "") .. resp_body
   if ngx.arg[2] then
    ngx.var.resp_body = ngx.ctx.buffered
   end
  ';

Lorsque le journal est généré, vous constaterez que lorsque les résultats de la réponse linguistique impliquent des caractères chinois, ils sont convertis en hexadécimaux et ne peuvent pas être reconnus.

Une partie du journal de réponse est la suivante :

response_body : {x22codex22 : 404, x22messagex22 : x22xE8xAFxB7xE6xB1x82xE7x9Ax84xE8xB5x84xE6xBAx90xE4xB8x8 DxE 5xADx98xE5x9CxA8x22, x22datax22 : {}}


Passable Copier dans le script Python à résoudre.

str1='''
{\x22code\x22: 404, \x22message\x22: \x22\xE8\xAF\xB7\xE6\xB1\x82\xE7\x9A\x84\xE8\xB5\x84\xE6\xBA\x90\xE4\xB8\x8D\xE5\xAD\x98\xE5\x9C\xA8\x22, \x22data\x22: {}}
'''
print(str1.encode('raw_unicode_escape').decode('utf-8'))

Le résultat de la saisie est :

{"code": 404, "message": "La ressource demandée n'existe pas", "data": {}}

Ce qui précède est le contenu détaillé de. pour plus d'informations, suivez d'autres articles connexes sur le site Web de PHP en chinois!

Déclaration:
Le contenu de cet article est volontairement contribué par les internautes et les droits d'auteur appartiennent à l'auteur original. Ce site n'assume aucune responsabilité légale correspondante. Si vous trouvez un contenu suspecté de plagiat ou de contrefaçon, veuillez contacter admin@php.cn