`
kavy
  • 浏览: 888159 次
  • 性别: Icon_minigender_1
  • 来自: 上海
社区版块
存档分类
最新评论

在nginx日志的access log中记录post请求的参数值

 
阅读更多

背景:有时程序偶出现参数少了或没有提交到下一个链接Url里后出现问题,如何查呢,最好的办法是在nginx上的加post参数,以定位到问题才有可能对某个UIR的代码出现的问题进行排查。
og_format access '$remote_addr - $remote_user [$time_local] "$request" $status $body_bytes_sent $request_body "$http_referer" "$http_user_agent" $http_x_forwarded_for';
access_log logs/test.access.log access;

注意放的位置在http里:nginx: [warn] the "log_format" directive may be used only on "http" level in /usr/local/nginx/conf/vhost/xxx.conf:59
nginx.conf
http里定义:wwwlog
   log_format  wwwlog  '$remote_addr - $remote_user [$time_local] "$request" '                                                                                                                      
              '$status $body_bytes_sent "$http_referer" '
              '"$http_user_agent" $http_x_forwarded_for "$request_time"';

在include每个域名里后面加上wwwlog:
access_log  /data/logs/access_mytv.log wwwlog; 

于是在同样的access后这样写:

  1. nginx.conf  
  2. log_format access '$remote_addr - $remote_user [$time_local] "$request" $status $body_bytes_sent $request_body "$http_referer" "$http_user_agent" $http_x_forwarded_for';  
  3.   
  4. 包含的justwinit.conf:  
  5. access_log  /data/logs/access_mytv.log access  


日志如下:
202.108.16.77 - - [14/Jan/2015:10:45:45 +0800] "POST /partin/releaseinfo HTTP/1.1" 302 5 id=47&choice_type=new&eid=338&videoid=5d6dabda-9b97-11e4-9584-21fa84a4ab6e&file_ext=mp4&lang=zh&upload_server=202.108.17.15&title=7%E5%B2%81%E5%B0%8F%E5%AD%A9%E9%85%92%E7%93%B6%E4%B8%8A%E5%81%9A%E4%BF%AF%E5%8D%A7%E6%92%91%E8%B9%BF%E7%BA%A2%E7%BD%91%E7%BB%9C&desc=7%E5%B2%81%E5%B0%8F%E5%AD%A9%E9%85%92%E7%93%B6%E4%B8%8A%E5%81%9A%E4%BF%AF%E5%8D%A7%E6%92%91%E8%B9%BF%E7%BA%A2%E7%BD%91%E7%BB%9C&tags=%E6%B5%8B%E8%AF%95%E4%B8%80%E4%B8%8B%E3%80%82&checkflag=on "http://justwinit.cn/partin/showupload/activityid/47" "Mozilla/5.0 (Windows NT 6.1; rv:34.0) Gecko/20100101 Firefox/34.0" -

POST URI及参数:POST /partin/releaseinfo HTTP/1.1" 302 5  .....
来自的refer Uri:http://justwinit.cn/partin/showupload/activityid/47


这个access_log的log_format应该可以定义多个不同的名供不同日志的需求。

再就是,
get请求的参数就是存放在http header中的,所以修改header的大小限制 当然可以解决请求串过长的问题啦。

移动互联网行业开发过程中,服务端经常会需要检查是否收到请求,收到什么样的请求,最简单的办法就是看nginx的access log,常见的nginx配置中access log一般都只有GET请求的参数,而POST请求的参数却不行。
http://wiki.nginx.org/NginxHttpCoreModule#.24request_body

    $request_body

    This variable(0.7.58+) contains the body of the request. The significance of this variable appears in locations with directives proxy_pass or fastcgi_pass. 

正如上文件所示,只需要使用$request_body即可打出post的数据,在现存的server段加上下面的设置即可:


    log_format access '$remote_addr - $remote_user [$time_local] "$request" $status $body_bytes_sent $request_body "$http_referer" "$http_user_agent" $http_x_forwarded_for';
    access_log logs/test.access.log access;

来自:http://www.54chen.com/web-ral/nginx-access-log-post.html

 

分享到:
评论

相关推荐

    nginx日志记录post请求的内容和cookies

    ### Nginx 日志记录 POST 请求的内容和 Cookies 在 Web 开发与运维中,Nginx 是一个非常流行的 HTTP 和反向代理服务器。对于开发者来说,掌握如何利用 Nginx 来记录用户发送的 POST 请求内容及 Cookies 信息至关...

    nginx日志测试使用 access.log.zip

    `access.log.zip`是一个压缩包,里面包含了Nginx服务器生成的访问日志记录,接下来我们将深入探讨Nginx日志的结构、用途及分析方法。 Nginx的默认日志格式(也称为`combined`格式)如下: ``` $remote_addr - $...

    Nginx设置日志打印post请求参数的方法

    当面对如描述中提到的情况,即需要在POST请求出现问题时能够获取到请求参数以便于调试,我们需要对Nginx的配置进行适当调整。 首先,要让Nginx记录POST请求的参数,关键在于修改`nginx.conf`文件中的`log_format`...

    Web应用安全:Nginx日志配置实验.doc

    通过Windows浏览器访问Kali Linux上的Nginx服务器,每次请求都会被记录在日志文件中。 6. **查看日志信息**: 访问后的日志信息将保存在`/var/log/nginx/access.log`文件中。可以使用`cat`, `less` 或 `tail`等...

    日志文件10000_access.log

    在IT行业中,日志文件是系统、应用或服务器运行过程中的重要记录,它们记录了各种操作、事件、错误和警告信息。"日志文件10000_access.log" 标题表明这是一个访问日志文件,通常与Web服务器有关,记录了用户对服务器...

    access.log数据、用户日志分析数据

    "access.log"文件是Web服务器(如Apache或Nginx)记录所有HTTP请求的标准日志文件,它包含了用户访问网站时的各种详细信息。通过分析这些日志数据,我们可以获取到丰富的用户行为信息,帮助优化网站性能,提升用户...

    shell脚本定时统计Nginx下access.log的PV并发送给API保存到数据库

    这个脚本会读取Nginx的access.log文件,统计当天的PV,并将结果通过POST请求发送到指定的API地址。在服务器端,可以使用如Spring MVC的@RequestMapping注解来接收并处理这个请求,然后将数据保存到数据库: ```java...

    网站日志查看器,很好用的服务器日志查看工具

    Nginx默认采用主日志和错误日志,主日志通常包含客户端请求的相关信息,而错误日志记录了服务器内部错误。网站日志查看器能够处理Nginx的日志,帮助用户优化服务器性能,识别高流量来源,或者追踪潜在的安全问题。 ...

    基于nginx access日志格式详解

    在Nginx服务器的配置中,日志记录是监控和分析网站性能、安全以及用户行为的关键工具。Nginx提供了自定义日志格式的功能,允许管理员根据需求调整日志内容。本文将详细解析Nginx Access日志的格式,帮助你更好地理解...

    那些实用的Nginx规则1

    Nginx日志记录可以通过`log_format`自定义,包含多种内置字段,如`$remote_addr`(客户端IP)、`$time_local`(本地时间戳)等。例如,创建一个包含请求方法和响应状态的日志格式: ```nginx log_format custom '[$...

    Nginx安全配置指南技术手册.pdf(应用技术指南).txt

    有效的日志记录和监控机制能够帮助快速检测和响应安全事件。 ```nginx access_log /var/log/nginx/access.log combined; error_log /var/log/nginx/error.log; ``` ### 五、总结 Nginx作为一款强大的Web服务器,其...

    nginx lua.ppt

    ngx_lua 是 Nginx 的一个扩展模块,它允许在 Nginx 配置文件中使用 Lua 脚本进行更复杂的逻辑处理。这个技术结合了 Nginx 的高性能和 Lua 的轻量级、高效的特性,使得动态处理和静态内容分发得以更好地融合。 在 ...

    nginx配置优化+负载均衡+动静分离详解

    - **错误日志级别**: `error_log /var/log/nginx/nginx_error.log crit;` 设置了Nginx的错误日志文件及其记录级别。这里使用的是`crit`级别,表示只记录严重的错误信息。对于生产环境而言,这有助于减少日志量,同时...

    服务器日志

    2. **日期和时间**:记录请求的具体时间,有助于分析访问模式和时间分布。 3. **请求方法**:GET、POST等,表明用户请求的类型。 4. **URL**:被请求的资源路径,有助于了解受欢迎的页面和未找到的URL(404错误)。 ...

    使用shell脚本对Nginx日志进行切分的示例代码

    这样,脚本将在每天的凌晨1点执行,将前一天的access.log文件切分并归档,同时确保Nginx继续将新的访问记录写入新的日志文件。 总结,通过使用shell脚本结合Nginx的日志管理功能,我们可以有效地对Nginx日志进行...

    Nginx-ngx_lua模块原理和内置函数.docx

    这些指令可以方便地定制日志记录逻辑,如根据不同的条件记录不同的信息。 - **lua_need_request_body / lua_shared_dict / lua_socket_*:** - `lua_need_request_body` 控制是否需要读取请求体,这对于处理 POST ...

    Nginx RPM 包定制制作

    /application/nginx-1.6.3/logs/access.log /application/nginx-1.6.3/logs/error.log /application/nginx-1.6.3/logs/nginx.pid /application/nginx-1.6.3/proxy_temp /application/nginx-1.6.3/sbin/nginx /...

    【Java面试系列】Nginx.pdf

    Nginx的日志文件通常位于`/var/log/nginx/access.log`和`/var/log/nginx/error.log`。 ### 限制同时连接到Nginx的客户端数量 通过`limit_conn`指令实现: ```nginx http { upstream backend { server localhost:...

    nginx rewrite常用示例

    `**:关闭访问日志记录。 - **`rewrite (.+) $scheme://www.$host$1 permanent;`**:使用正则表达式匹配所有请求,并将其重定向至带 `www.` 的 URL,其中 `$scheme` 为当前请求的协议(HTTP 或 HTTPS),`$host` 为...

    通过ngx-lua来统计nginx上的虚拟主机性能数据

    这可以通过在Lua脚本中注入自定义的log_by_lua_block或access_by_lua_block来实现。例如,我们可以使用`ngx.now()`获取当前时间戳,然后在请求结束时再次获取时间戳,计算出处理耗时。 对于多个虚拟主机的性能数据...

Global site tag (gtag.js) - Google Analytics