Nginx 使用 lua-nginx-module 來獲取post請求中的request和response信息

1. 軟件版本

  • 系統(tǒng) centos6.7X86_64
  • nginx 1.11.5
  • lua-nginx-module 0.10.7
  • PHP 5.6.27

2. 環(huán)境準備

配置yum倉庫

wget -O /etc/yum.repos.d/CentOS-Base.repo[https://lug.ustc.edu.cn/wiki/_export/code/mirrors/help/centos?codeblock=2](https://lug.ustc.edu.cn/wiki/_export/code/mirrors/help/centos?codeblock=2)
wget -O /etc/yum.repos.d/epel.repo[https://lug.ustc.edu.cn/wiki/_export/code/mirrors/help/epel?codeblock=0](https://lug.ustc.edu.cn/wiki/_export/code/mirrors/help/epel?codeblock=0)
wget -O /etc/yum.repos.d/epel-testing.repo[https://lug.ustc.edu.cn/wiki/_export/code/mirrors/help/epel?codeblock=1](https://lug.ustc.edu.cn/wiki/_export/code/mirrors/help/epel?codeblock=1)
/usr/sbin/ntpdate  asia.pool.ntp.org

安裝編譯所需的依賴

yum -y install gcc gcc-c++ make libtool zlib zlib-devel openssl openssl-devel pcre  pcre-devel

3. 軟件安裝

安裝php5.6

rpm -Uvh https://mirror.webtatic.com/yum/el6/latest.rpm
yum -y install php56w-cli php56w-mysql php56w-xml php56w-mbstring php56w-pdo php56w-bcmath php56w-mcrypt php56w-fpm 

編譯安裝nginx

cd /opt/software/
wget https://codeload.github.com/openresty/lua-nginx-module/tar.gz/v0.10.7
wget http://luajit.org/download/LuaJIT-2.0.4.tar.gz
wget https://nginx.org/download/nginx-1.11.5.tar.gz

groupadd nginx
useradd -g nginx -s /sbin/nologin nginx
mkdir -p /var/tmp/nginx/client/
mkdir -p /usr/local/nginx

tar zxf lua-nginx-module-0.10.7.tar.gz 
tar zxf LuaJIT-2.0.4.tar.gz 
tar zxf nginx-1.11.5.tar.gz 

cd LuaJIT-2.0.4/
make && make install

cat >> /etc/profile <<EOF
export LUAJIT_LIB=/usr/local/lib
export LUAJIT_INC=/usr/local/include/luajit-2.0
export LD_LIBRARY_PATH=/usr/local/lib:$LD_LIBRARY_PATH
EOF
source /etc/profile

cd ../nginx-1.11.5/
 ./configure   --prefix=/usr/local/nginx   --user=nginx   --group=nginx   --with-http_ssl_module   --with-http_flv_module   --with-http_stub_status_module   --with-http_gzip_static_module   --with-http_realip_module   --http-client-body-temp-path=/var/tmp/nginx/client/   --http-proxy-temp-path=/var/tmp/nginx/proxy/   --http-fastcgi-temp-path=/var/tmp/nginx/fcgi/   --http-uwsgi-temp-path=/var/tmp/nginx/uwsgi   --http-scgi-temp-path=/var/tmp/nginx/scgi   --with-pcre --add-module=../lua-nginx-module-0.10.7

make -j2
make install

4. 配置lua腳本

在nginx配置文件中添加下列l(wèi)ocation

# /usr/local/nginx/conf/nginx.conf
        location ~* ^/lua(/.*) {
                default_type 'text/plain';
                content_by_lua 'ngx.say("hello, lua")';
        }

啟動nginx

/usr/local/nginx/sbin/nginx

測試lua腳本執(zhí)行

curl http://127.0.0.1/lua/

返回 hello, lua 為正常

5. 配置php

啟用如下選項

#/usr/local/nginx/conf/nginx.conf
location / {
            root   /web;
            index  index.php index.html index.htm;
        }

location ~ \.php$ {
            root           /web/;
            fastcgi_pass   127.0.0.1:9000;
            fastcgi_index  index.php;
            fastcgi_param  SCRIPT_FILENAME  /$document_root$fastcgi_script_name;
            include        fastcgi_params;
        }

在/web/目錄下 新建index.php的測試頁面吟宦,測試php是否能正常工作

mkdir /web/
cat > /web/info.php << EOF
<?php
phpinfo();
?>
EOF
chown nginx.nginx -R /web/

啟動php-fpm和nginx

/etc/init.d/php-fpm start
/usr/local/nginx/sbin/nginx  -s reload

測試

curl http://127.0.0.1/info.php   

顯示phpinfo頁面,極為正常

6. 配置日志,記錄post請求的request_body 和response_body

使用下列配置

# /usr/local/nginx/conf/nginx.conf
user  nginx;
worker_processes  1;

events {
    worker_connections  1024;
}

http {
    include       mime.types;
    default_type  application/octet-stream;

    log_format postdata '$remote_addr | $request_body | $resp_body';

    sendfile        on;
    keepalive_timeout  65;

    server {
        listen       80;
        server_name  localhost;
        charset utf-8;
        set $resp_body "";
        location / {
            root   /web/;
            index  index.php index.html index.htm;
        }

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

        location ~ \.php$ {
                    root           /web/;
                    fastcgi_pass   127.0.0.1:9000;
                    fastcgi_index  index.php;
                    fastcgi_param  SCRIPT_FILENAME  /$document_root$fastcgi_script_name;
                    include        fastcgi_params;
                    access_log /tmp/nginx_access.log postdata;
                    lua_need_request_body on;
                    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
                  ';
        }
    }
}

創(chuàng)建php文件艾恼,用來接收post請求,并返回數據

cat >> /web/index.php  <<EOF
<?php
  header("Content-type:text/html;charset=utf-8"); 
  print_r(file_get_contents('php://input'));
?>
EOF
chown nginx.nginx /web/index.php

重啟nginx

/usr/local/nginx/sbin/nginx  -s reload

使用postman工具來發(fā)送post請求

Paste_Image.png

查看日志

cat  /tmp/nginx_access.log
Paste_Image.png

已經記錄post請求的request 和response數據了冒掌。

第二行是因為post數據有中文字符血巍,所以變成了16進制。解決方法見 解決nginx在記錄post數據時 中文字符轉成16進制的問題

最后編輯于
?著作權歸作者所有,轉載或內容合作請聯系作者
  • 序言:七十年代末践美,一起剝皮案震驚了整個濱河市,隨后出現的幾起案子铐尚,更是在濱河造成了極大的恐慌拨脉,老刑警劉巖,帶你破解...
    沈念sama閱讀 217,542評論 6 504
  • 序言:濱河連續(xù)發(fā)生了三起死亡事件宣增,死亡現場離奇詭異玫膀,居然都是意外死亡,警方通過查閱死者的電腦和手機爹脾,發(fā)現死者居然都...
    沈念sama閱讀 92,822評論 3 394
  • 文/潘曉璐 我一進店門帖旨,熙熙樓的掌柜王于貴愁眉苦臉地迎上來箕昭,“玉大人,你說我怎么就攤上這事解阅÷渲瘢” “怎么了?”我有些...
    開封第一講書人閱讀 163,912評論 0 354
  • 文/不壞的土叔 我叫張陵货抄,是天一觀的道長述召。 經常有香客問我,道長蟹地,這世上最難降的妖魔是什么积暖? 我笑而不...
    開封第一講書人閱讀 58,449評論 1 293
  • 正文 為了忘掉前任,我火速辦了婚禮怪与,結果婚禮上夺刑,老公的妹妹穿的比我還像新娘。我一直安慰自己分别,他們只是感情好遍愿,可當我...
    茶點故事閱讀 67,500評論 6 392
  • 文/花漫 我一把揭開白布。 她就那樣靜靜地躺著耘斩,像睡著了一般沼填。 火紅的嫁衣襯著肌膚如雪。 梳的紋絲不亂的頭發(fā)上煌往,一...
    開封第一講書人閱讀 51,370評論 1 302
  • 那天倾哺,我揣著相機與錄音,去河邊找鬼刽脖。 笑死羞海,一個胖子當著我的面吹牛,可吹牛的內容都是我干的曲管。 我是一名探鬼主播却邓,決...
    沈念sama閱讀 40,193評論 3 418
  • 文/蒼蘭香墨 我猛地睜開眼,長吁一口氣:“原來是場噩夢啊……” “哼院水!你這毒婦竟也來了腊徙?” 一聲冷哼從身側響起,我...
    開封第一講書人閱讀 39,074評論 0 276
  • 序言:老撾萬榮一對情侶失蹤檬某,失蹤者是張志新(化名)和其女友劉穎撬腾,沒想到半個月后,有當地人在樹林里發(fā)現了一具尸體恢恼,經...
    沈念sama閱讀 45,505評論 1 314
  • 正文 獨居荒郊野嶺守林人離奇死亡民傻,尸身上長有42處帶血的膿包…… 初始之章·張勛 以下內容為張勛視角 年9月15日...
    茶點故事閱讀 37,722評論 3 335
  • 正文 我和宋清朗相戀三年,在試婚紗的時候發(fā)現自己被綠了。 大學時的朋友給我發(fā)了我未婚夫和他白月光在一起吃飯的照片漓踢。...
    茶點故事閱讀 39,841評論 1 348
  • 序言:一個原本活蹦亂跳的男人離奇死亡牵署,死狀恐怖,靈堂內的尸體忽然破棺而出喧半,到底是詐尸還是另有隱情奴迅,我是刑警寧澤,帶...
    沈念sama閱讀 35,569評論 5 345
  • 正文 年R本政府宣布挺据,位于F島的核電站取具,受9級特大地震影響,放射性物質發(fā)生泄漏吴菠。R本人自食惡果不足惜者填,卻給世界環(huán)境...
    茶點故事閱讀 41,168評論 3 328
  • 文/蒙蒙 一浩村、第九天 我趴在偏房一處隱蔽的房頂上張望做葵。 院中可真熱鬧,春花似錦心墅、人聲如沸酿矢。這莊子的主人今日做“春日...
    開封第一講書人閱讀 31,783評論 0 22
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽瘫筐。三九已至,卻和暖如春铐姚,著一層夾襖步出監(jiān)牢的瞬間策肝,已是汗流浹背。 一陣腳步聲響...
    開封第一講書人閱讀 32,918評論 1 269
  • 我被黑心中介騙來泰國打工隐绵, 沒想到剛下飛機就差點兒被人妖公主榨干…… 1. 我叫王不留之众,地道東北人。 一個月前我還...
    沈念sama閱讀 47,962評論 2 370
  • 正文 我出身青樓依许,卻偏偏與公主長得像棺禾,于是被迫代替她去往敵國和親。 傳聞我的和親對象是個殘疾皇子峭跳,可洞房花燭夜當晚...
    茶點故事閱讀 44,781評論 2 354

推薦閱讀更多精彩內容