一、获取全部cookie信息
这个比较方便,直接在nginx.conf文件中添加$http_cookie
log_format main '[$time_local] - $remote_addr:$remote_port - $remote_user - $upstream_addr $upstream_status $upstream_response_time - ' '"$request" $status $bytes_sent $request_time ' '"$http_referer" - "$http_user_agent" ' '"$http_cookie"'; # 增加一个 $http_cookie
第二步,在server 中的access.log 后加上 main
access_log logs/item_access.log main; error_log logs/item_error.log ;
二、获取单个cookie的值
有时候要是是觉得某个cookie很重要,需要单独取出来,免得去一堆麻烦
首先,也是在nginx.conf文件中定义一个值,如 $my_cookie
log_format main '[$time_local] - $remote_addr:$remote_port - $remote_user - $upstream_addr $upstream_status $upstream_response_time - ' '"$request" $status $bytes_sent $request_time ' '"$http_referer" - "$http_user_agent" ' '"$my_cookie" "$http_cookie"'; # 这边定义了 $my_cookie 和 $http_cookie其实都能取到 # $my_cookie只能取到 value
其次还是要改server 中的内容,
server { listen 80; server_name xxxx.****.com ; access_log logs/item_access.log main; # main 需要 error_log logs/item_error.log ; set $my_cookie ""; if ($http_cookie ~* "my_cookie=(.+?)(?=;|$)") { set $my_cookie $1; }
三、获取多个cookie的值
如果觉得不止一个cookie的值重要,比如有两个cookie需要取出来,如何呢?重复第二步的动作
在nginx.conf 日志格式中增加也该 $my_cookie2 的变量
再在server 段中增加一个 set $my_cookie2那部分
log_format main '[$time_local] - $remote_addr:$remote_port - $remote_user - $upstream_addr $upstream_status $upstream_response_time - ' '"$request" $status $bytes_sent $request_time ' '"$http_referer" - "$http_user_agent" ' '"$my_cookie" - "$my_cookie2" - "$http_cookie"'; server { listen 80; server_name xxxx.***.com ; access_log logs/item_access.log main; # main 需要 error_log logs/item_error.log ; set $my_cookie ""; if ($http_cookie ~* "my_cookie=(.+?)(?=;|$)") { set $my_cookie $1; } set $my_cookie2 ""; if ($http_cookie ~* "my_cookie2=(.+?)(?=;|$)") { set $my_cookie2 $1; }
我这边是实现了,但是命名不一样,大家自己尝试吧。
ps:nginx日志中添加cookie信息
1.在要添加的server中添加获取cookie的信息
server { listen 80; server_name jxjymember.cdeledu.com; set $jxjymembercookie ""; #此处如果想取全部cookie 可以写成 #if ( $http_cookie ~* "(.*)$" ){ if ( $http_cookie ~* "jxjymembercookie=([a-za-z0-9_]*)" ){ set $jxjymembercookie $1; } access_log logs/jxjymember.cdeledu.com_access.log main; error_log logs/error_jxjymember.cdeledu.com.log; location / { # proxy_pass http://cdel_jxjy_member; proxy_redirect off; proxy_set_header host $host; proxy_set_header x-real-ip $remote_addr; proxy_set_header x-forwarded-for $proxy_add_x_forwarded_for; client_max_body_size 10m; client_body_buffer_size 512k; proxy_connect_timeout 300; proxy_send_timeout 300; proxy_read_timeout 300; proxy_buffer_size 64k; proxy_buffers 32 64k; proxy_busy_buffers_size 128k; proxy_temp_file_write_size 64k; } }
主要添加的地方都标红了,说明下:第一处的意思是:定义一个jxjymembercookie变量,变量的内容从http的cookie去取,取的规则是匹配后面的正则jxjymembercookie=([a-za-z0-9_]*),其实http_cookie这个里面的值是一个一个cookie的值,中间以“;”分隔。
2.在log_format main中添加上要添加的变量名。
log_format main '$proxy_add_x_forwarded_for - $remote_user [$time_local] ' '"$request" $status $bytes_sent ' '"$http_referer" "$http_user_agent" $jxjymembercookie ';
3.效果
取一个的

取全部的

Atas ialah kandungan terperinci nginx日志怎么增加cookie信息. Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!
biskut
nginx mulakan semula
Penjelasan terperinci tentang konfigurasi nginx
Penjelasan terperinci tentang konfigurasi nginx
Bagaimana untuk menyelesaikan masalah yang document.cookie tidak boleh diperolehi
Apakah perbezaan antara tomcat dan nginx
Apakah maksud menyekat semua kuki?
tutorial menjalankan kod c++