この記事では、nginxのログにリクエストを追加した際の応答ログを中心に紹介していますので、必要な方は参考にしてください
この機能はnginxの組み込み機能には含まれていません。サードパーティのモジュール ngx_lua をインストールする必要があります。このモジュールには Lua 言語が必要なので、対応する Lua 言語パッケージをインストールする必要があります
1. LuaJIT をダウンロードしてインストールします
# 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
コンパイルが成功しました
OK Successfully built LuaJIT make[1]: Leaving directory `/usr/local/src/LuaJIT-2.0.2/src' ==== Successfully built LuaJIT 2.0.2 ==== # make install
次の内容はインストールが成功したことを示しています
==== LuaJIT 2.0.2 を /usr/local に正常にインストールしました ====
2. nginx 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. 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. インストールが成功したかどうかをテストします
luaコマンドメソッドサーバーにローカルを追加します
# cd /usr/local/nginx-1.4.2/conf/ # vi nginx.conf
location /hello { default_type 'text/plain'; content_by_lua 'ngx.say("hello, lua")'; }
1.注意してください。エラーなく各モジュールのインストールディレクトリにコピーします
2. apt-nginxをgetメソッドでインストールした場合、このメソッドでダウンロードしたソフトウェアはコンパイルできないため、まずnginxを削除する必要があります3.これサードパーティのインストールが成功したことを示します。5. ログの追加を開始しましょう
# cd /usr/local/nginx-1.4.2/sbin # ./nginx
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; } } }
response_body: {x22codex22: 404, x22messagex22: x22xE8xAFxB7xE6xB1x82xE7x9Ax84xE8xB5x84xE6xBAx90xE4xB8x8DxE5xADx98 x E5x9CxA8x22、x22datax22: {}}
は、Python スクリプトにコピーすることで解決できます。
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 ';
{"code": 404, "message": "要求されたリソースは存在しません", "data": {}}
以上が要求された応答ログを nginx ログに追加しますの詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。