关于nginx日志增加cookie信息

  

操作系统:Ubuntu 18.04,nginx 1.14.0

1. 修改nginx.conf配置文件

首先,需要打开nginx配置文件nginx.conf,找到http {}段,确保以下配置开启:

http {
    ......
    log_format  main  '$remote_addr - $remote_user [$time_local] "$request" '
                      '$status $body_bytes_sent "$http_referer" '
                      '"$http_user_agent" "$http_x_forwarded_for"';

    access_log  /var/log/nginx/access.log  main;

    ......
}

以上配置中log_format定义了日志的格式,access_log定义了日志的存储路径和日志格式。

2. 增加cookie信息

要将cookie信息添加到日志中,必须使用nginx的HttpSetMiscModule扩展模块。

2.1 下载HttpSetMiscModule

在终端中执行以下命令下载HttpSetMiscModule

cd /tmp
wget https://github.com/openresty/set-misc-nginx-module/archive/v0.32.tar.gz
tar -xzvf v0.32.tar.gz

2.2 安装HttpSetMiscModule

执行以下命令,编译安装HttpSetMiscModule模块:

cd /path/to/nginx/source
./configure --add-module=/tmp/set-misc-nginx-module-0.32
make && make install

2.3 修改nginx.conf

nginx.conf中添加以下配置:

http {
    ......
    set $real_cookie $http_cookie;

    log_format withcookie '$remote_addr - $remote_user [$time_local] '
                           '"$request" $status $body_bytes_sent '
                           '"$http_referer" "$http_user_agent" '
                           '"$http_x_forwarded_for" "$real_cookie"';

    access_log /var/log/nginx/access.log withcookie;
    ......
}

以上配置中,set $real_cookie $http_cookie;将请求中的cookie信息存储在变量$real_cookie中。

withcookie是自定义的日志格式,其中"$real_cookie"即为上面提到的存储cookie信息的变量。

access_log /var/log/nginx/access.log withcookie;即指定日志格式为withcookie

3. 启动nginx

修改完nginx.conf后,执行以下命令重启nginx服务:

sudo service nginx restart

现在,访问网站时,就可以在日志中看到请求发送的cookie信息了。

例如,访问地址http://www.example.com,在access.log中的日志记录如下:

192.168.0.1 - - [15/Dec/2021:01:11:53 +0800] "GET / HTTP/1.1" 200 26722 "-" "Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/96.0.4664.45 Safari/537.36" "-" "COOKIE_VALUE"

日志记录中的"COOKIE_VALUE"即为请求时发送的cookie信息。

相关文章