Nginx日志中request_body为空

部署Nginx,查看Nginx日志的时候,发现request_body的值没有记录下来

Nginx日志:

192.168.1.1--2016-02-24T13:33:54+08:00POST /rate_plan HTTP/1.12002----0.0020.701
192.168.1.1--2016-02-24T13:33:54+08:00POST /rate_plan HTTP/1.12002----0.0010.617
192.168.1.1--2016-02-24T13:37:44+08:00POST /rate_plan HTTP/1.12002----0.0020.502

问题可能原因:

当 nginx 尚未读取请求体的时候,或者请求体有一部分或者全部缓冲到临时文件的时候,$request_body 和 $echo_request_body 都将是空值。 
Nginx 读取请求体是按需的,如果使用 ngx_proxy 模块的话,读取发生在 content 请求处理阶段。所以如果在早于 content 阶段之前的阶段(比如 rewrite 阶段)去读取 $request_body,则必是空值

处理办法在nginx.conf配置文件中添加了两个配置项:

fastcgi_buffers 32 8k;               #指定本地需要用多少和多大的缓冲区来缓冲FastCGI的应答。    client_body_buffer_size 1024k; #缓冲区代理缓冲用户端请求的最大字节数

worker_processes  2;
daemon off;
#pid        logs/nginx.pid;
events {
    worker_connections  1024;
}
http {
    include       mime.types;
    default_type  application/octet-stream;
    log_format  main  ‘$remote_addr$remote_user$http_user_name$time_iso8601$request‘
                      ‘$status$body_bytes_sent$request_body$http_referer$http_user_agent‘
                      ‘$http_x_forwarded_for$upstream_response_time$request_time‘;
    sendfile        on;
    keepalive_timeout  65;
    client_max_body_size 100m;
    fastcgi_buffers 32 8k;
    client_body_buffer_size 1024k;
    server {
        listen       80;
        server_name  localhost;
        charset utf-8;
        location = / {
            root html;
            index  index.html index.htm;
            error_page 405 =200 $uri;
        }
        # redirect server error pages to the static page /50x.html
        error_page   500 502 503 504  /50x.html;
        location = /50x.html {
            root   html;
        }
        error_page 405 =200 /index.html;
    }
    include conf.d/*.conf;
}
时间: 2024-08-09 20:40:09

Nginx日志中request_body为空的相关文章

nginx日志中$request_body 十六进制字符(\\x22) 引号问题处理记录

在使用nginx记录访问日志时,发现在含有 request_body 的 PUT , POST 请求时,日志中会含有 x22 x9B x5C x09 x08 字符,不利于阅读和处理. 具体 支持 request_body 的http method参见 http1.1定义 9 Method Definitions 和 Payloads of HTTP Request Methods nginx.conf 默认access_log 配置 log_format main '$remote_addr -

Nginx 日志中记录cookie

因开发要求,在Nginx日志中需要记录Cookie信息,以便开发查询系统发生了什么,我的日志是以json格式显示,需要在nginx.conf文件中添加如下信息: 1,#vim  nginx.conf http {    include       mime.types;    default_type  application/octet-stream;   log_format logstash_json '{"@timestamp":"$time_iso8601"

将nginx日志中的蜘蛛记录删除掉

#!/bin/sh if [ -r $1 ]; then     #Delete Baiduspider     baidu=$(grep -c 'Baiduspider' $1)     if [ $baidu -gt 0 ]; then         sed -i '/Baiduspider/d' $1         echo "match Baiduspider $baidu line."     else         echo "Baiduspider not

awk分析nginx日志中响应时间的方法

针对响应时间慢的问题,我们在nginx日志格式中增加响应时间,现在需要针对响应时间进行分析,查找出相对较慢的响应时间. 1.确认下日志文件格式 日志格式: log_format main '$remote_addr - $remote_user [$time_local] "$request" ' '$status $body_bytes_sent "$http_referer" ' '"$http_user_agent" $http_x_for

nginx日志中得到访问量最高前10个IP

~ cat access.log.10 | awk '{a[$1]++} END {for(b in a) print b"\t"a[b]}' | sort -k2 -r | head -n 10 163.177.71.12   972 101.226.68.137  972 183.195.232.138 971 50.116.27.194   97 14.17.29.86     96 61.135.216.104  94 61.135.216.105  91 61.186.190

ELK对nginx日志进行流量监控

ELK对nginx日志进行流量监控 一.前言 线上有一套ELK单机版,版本为5.2.1.现在想把nginx访问日志接入到elk里,进行各个域名使用流量带宽的统计分析.要把nginx日志传输到elk上,可以在存有nginx日志的服务器上使用logstash或者filebeat.但是因为logstash是jvm跑的,资源消耗比较大,启动一个logstash就需要消耗500M左右的内存(这就是为什么logstash启动特别慢的原因),而filebeat只需要10来M内存资源,所以最终决定使用fileb

Nginx 日志记录post数据,并使用goaccess进行日志分析

nginx日志默认不会记录post数据 在nginx配置文件的http节 log_format 日志格式标识 [escape=json] 日志格式 比如:日志格式标识设置为main,添加escape=json以便中文正确显示(注意,escape=json 需要 nginx 1.11.8 以上版本才支持),记录post和cookie的请求的相信信息 log_format main escape=json '$remote_addr [$time_local] "$request" $st

Flume采集Nginx日志到HDFS

下载apache-flume-1.7.0-bin.tar.gz,用 tar -zxvf 解压,在/etc/profile文件中增加设置: export FLUME_HOME=/opt/apache-flume-1.7.0-bin export PATH=$PATH:$FLUME_HOME/bin 修改$FLUME_HOME/conf/下的两个文件,在flume-env.sh中增加JAVA_HOME: JAVA_HOME=/opt/jdk1.8.0_121 最重要的,修改flume-conf.pr

nginx日志:"CONNECT check.best-proxies.ru:80 HTTP/1.1" 400 166

在nginx日志中看到这样的日子莫荒 - - 95.213.187.186 - 95.213.187.186 - - [24/Jun/2016:22:14:38 +0800] "CONNECT check.best-proxies.ru:80 HTTP/1.1" 400 166 "-" "-" "0.269" 这也不是什么中毒,被控制了. 下面来测试下 假设你服务器IP为: 101.1.1.1 hosts绑定  101.1.1