前言
Nginx日志主要分为两种:访问日志和错误日志。日志开关在Nginx配置文件(/etc/nginx/nginx.conf)中设置,两种日志都可以选择性关闭,默认都是打开的。
访问日志主要记录客户端访问Nginx的每一个请求,格式可以自定义。通过访问日志,你可以得到用户地域来源、跳转来源、使用终端、某个URL访问量等相关信息。
日志的重要性不言而喻,一般来说我们开发过程中会为每个项目定义自己的日志格式以及存储路径。
就我们普通的JAVAWEB项目来说,重要的日志一般输出并存放在Tomcat的log目录下,并区分日志输出级别。用于区分,查阅并统计相关日志信息。
当然,这不是重点,重点是很多公司,对于日志的重要性似乎并不是那么重视,当然这可能跟平台本身有一定的关系。
日志配置
其实分析Nginx日志,可以得到很多有用的数据,响应耗时的url、请求时间,各个时间段的请求量,并发量。配合使用ELK日志系统可以很好的呈现系统使用情况。
一般来说,常见的懒人通用日志配置,多个项目公用一个access.log或者error.log,导致运行一段时间后日志文件特别大,几G甚至几十G的都有。
下面,主要来讲一下Nginx日志的正确配置方式。
日志输出格式:
#这个要配置在http中 log_format access '$remote_addr - $remote_user [$time_local] "$request" ' '$status $body_bytes_sent "$http_referer" ' '"$http_user_agent" "$http_x_forwarded_for"';
项目配置:
limit_req_zone $binary_remote_addr $uri zone=api_read:20m rate=50r/s;#查询 #报告 server { listen 80; server_name report.52itstyle.com; index login.jsp; access_log /usr/local/nginx/logs/report.52itstyle.com.access.log access; #关闭静态文件的日志打印 location ~ .*\.(gif|jpg|jpeg|png|bmp|swf|css|js|ico)?$ { expires 1d; access_log off; proxy_pass http://report; } location / { limit_req zone=api_read burst=5;#请求限流,设置队列 proxy_pass http://report; } error_page 500 502 503 504 /50x.html; location = /50x.html { root html; } } upstream report { fair; server 172.16.1.120:8882 weight=1 max_fails=2 fail_timeout=30s; server 172.16.1.120:8881 weight=1 max_fails=2 fail_timeout=30s; }
以上配置,优化了几点:
当然还有更加优化的方案,比如Nginx日志按照日期格式输出,但是Nginx本身是不支持此功能的,只能通过sheel脚本自己进行切割,感兴趣的朋友们可以通过下面推荐的您可能感兴趣的文章进行阅读学习。
总结
以上就是这篇文章的全部内容了,希望本文的内容对大家的学习或者工作能带来一定的帮助,如果有疑问大家可以留言交流,谢谢大家对小牛知识库的支持。
主要内容:1. 设置错误日志,2. 设置访问日志,3. 启用条件日志记录,4. 日志记录到Syslog本节介绍如何在NGINX中配置日志记录错误和处理的请求。在本文章中将涉及以下内容 - 设置错误日志 设置访问日志 启用条件日志记录 日志记录到Syslog 1. 设置错误日志 NGINX将遇到的不同严重性级别问题的信息写入错误日志。 指令将日志记录设置为特定文件,或,并指定要记录的消息的最低级别。 默认情况下,错误日志位于(绝对路径取决于操作系统和安装),并记录来自所指定的所有严重级别的消息。
本文向大家介绍Nginx屏蔽F5心跳日志、指定IP访问日志,包括了Nginx屏蔽F5心跳日志、指定IP访问日志的使用技巧和注意事项,需要的朋友参考一下 注:192.168.0.2是F5内网地址。 下面的配置经测试是失败的,依然记录访问日志: 推测是日志记录在deny前执行,执行到deny返回403 Forbidden。
本文向大家介绍Django实现的自定义访问日志模块示例,包括了Django实现的自定义访问日志模块示例的使用技巧和注意事项,需要的朋友参考一下 本文实例讲述了Django实现的自定义访问日志模块。分享给大家供大家参考,具体如下: 在Django默认没有访问日志模块,但是我们可以通过Django的Middleware来实现一个自己的访问日志模块。 首先在Django的工程下创建一个middlewar
在像这样的典型Spring Boot应用程序中,我们如何配置它来使用“自定义”日志配置? 例如,在我的应用程序运行的当前环境中,日志正在导致错误,我如何使用其他日志例如:
请查找我的nginx日志输出(access.log) 182.69.143.120---[31/Mar/2016:03:10:51 0530]“GET/api/check_delivery.php?authkey=9450AW2qTKYe453be757c My nginx自定义日志格式: $remote_addr-$remote_user[$time_local]“$request”$host'
grok Logstash 默认自带了 apache 标准日志的 grok 正则: COMMONAPACHELOG %{IPORHOST:clientip} %{USER:ident} %{NOTSPACE:auth} [%{HTTPDATE:timestamp}] "(?:%{WORD:verb} %{NOTSPACE:request}(?: HTTP/%{NUMBER:httpversion}