nginx服务器access_log日志详解

本文详细介绍了Nginx的两种日志配置——access log和error log,并提供了具体的配置示例,帮助读者理解如何自定义日志格式。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

前言:

nginx的log日志分为:access log 和 error log

其中access log 记录了哪些用户,哪些页面以及用户浏览器、ip和其他的访问信息

error log 则是记录服务器错误日志

log_format 日志格式语法:

log_format name(格式名字) 格式样式(即想要得到什么样的日志内容)

示例:

log_format main 
'$remote_addr - $remote_user [$time_local] "$request" '
'$status $body_bytes_s ent "$http_referer" '
'"$http_user_agent" "$http_x_forwarded_for"'

看一下和上述日志匹配的log格式设置:

1

2

3

4

5

6

7

8

9

10

#access日志格式配置,具体参数不再细说,上面都已经说过了,自己对应一下即可

log_format main '$remote_addr - $remote_user [$time_local] '

      'fwf[$http_x_forwarded_for] tip[$http_true_client_ip] '

      '$upstream_addr $upstream_response_time $request_time '

      '$geoip_country_code '

      '$http_host $request '

      '"$status" $body_bytes_sent "$http_referer" '

      '"$http_accept_language" "$http_user_agent" ';

#配置access log日志的存储位置及文件,注意:access.log文件是可以按日期进行分割的,方便查看及处理

access_log /home/serversoft/nginx/log/access.log main;

错误日志的形式如下:

201.158.69.116 - - [03/Jan/2013:21:17:20 -0600] fwf[-] tip[-] 127.0.0.1:9000 0.007 0.007 MX pythontab.com GET /html/test.html HTTP/1.1 "200" 2426 "http://a.com" "es-ES,es;q=0.8" "Mozilla/5.0 (Windows NT 6.1) AppleWebKit/537.11 (KHTML, like Gecko) Chrome/23.0.1271.97 Safari/537.11"

从上面我们可以看出几部分信息:

      1.客户端(用户)IP地址。如:上例中的 201.158.69.116

      2.访问时间。如:上例中的 [03/Jan/2013:21:17:20 -0600]

      3.访问端口。如:上例中的 127.0.0.1:9000

      4.响应时间。如:上例中的 0.007

      5.请求时间。如:上例中的 0.007

      6.用户地理位置代码(国家代码)。

      7.请求的url地址(目标url地址)的host。如:上例中的 pythontab.com

      8.请求方式(GET或者POST等)。

      9.请求url地址(去除host部分)。

      10.请求状态(状态码,200表示成功,404表示页面不存在,301表示永久重定向等,具体状态码可以在网上找相关文章,不再赘述)。如:上例中的 "200"

      11.请求页面大小,默认为B(byte)。

      12.来源页面,即从哪个页面转到本页,专业名称叫做“referer”。如:上例中的 "http://a.com"

      13.用户浏览器语言。如:上例中的 "es-ES,es;q=0.8"

      14.用户浏览器其他信息,浏览器版本、浏览器类型等。如:上例中的  "Mozilla/5.0 (Windows NT 6.1) AppleWebKit/537.11 (KHTML, like Gecko) Chrome/23.0.1271.97 Safari/537.11"

其实nginx access日志的格式不是一成不变的,是可以自定义的。

在nginx的nginx.conf配置文件找到:log_format 这里就是日志的格式

赵洗能软件外包个性化定制开发合作,有意者请联系详谈 联系我们

个性化网站定制开发,phaser3定制开发,让你与众不同  赵洗能平台

<think>嗯,用户想了解Nginx配置文件中access_log指令的具体用法,还要求详细说明和配置示例。首先,我需要回忆一下access_log的基本作用,它是用来记录客户端请求的日志的。然后,我得考虑它的语法结构,比如路径、格式和条件这些参数。 接下来,用户可能需要知道如何配置不同的日志格式,比如使用main或者自定义格式。还要提到作用域,这个指令可以用在http、server、location块里,不同位置的配置会有优先级问题,这点很重要,不能搞错。 然后,配置示例部分应该给出几个常见场景,比如基本的访问日志、按天分割日志、条件记录和不同格式的日志。这些示例要具体,让用户能直接复制使用。另外,要提到日志分析工具,比如awk和GoAccess,这样用户知道如何处理生成的日志。 还要注意引用的问题,用户提供的几个引用链接中,引用[1]、[2]、[4]都涉及access_log的配置和统计,需要正确对应到回答里。比如路径配置、按天分割的方法,这些在引用里都有提到,要确保信息准确。 可能用户没有明说但需要知道的是如何优化日志记录,比如关闭日志、按条件记录来减少磁盘IO,或者如何做日志轮转。这些高级用法可以作为补充内容,帮助用户更全面地应用access_log指令。 最后,生成的相关问题要围绕access_log展开,比如路径管理、格式自定义、日志分析、性能优化、按时间分割和权限相关的问题,这样能引导用户进一步深入学习。需要确保每个问题都有对应的知识点,并且引用正确的参考资料。</think>### Nginx access_log指令详解 #### 一、指令作用 access_log指令用于记录客户端请求的访问日志,包含请求时间、客户端IP、响应状态等关键信息,是进行流量分析、故障排查的基础工具[^1][^4]。 #### 二、指令语法 ```nginx access_log path [format [buffer=size] [gzip=level] [flush=time] [if=condition]]; ``` 或关闭日志记录: ```nginx access_log off; ``` - `path`:日志文件存储路径(支持变量) - `format`:指定日志格式(默认使用combined格式) - `buffer`:设置内存缓冲区大小 - `gzip`:启用日志压缩(1-9级压缩比) - `if`:条件记录 #### 三、作用范围 可配置于以下上下文: - http - server - location (注意:子块配置会覆盖父块配置) #### 四、配置示例 1. **基础配置** ```nginx http { log_format main '$remote_addr - $remote_user [$time_local] ' '"$request" $status $body_bytes_sent ' '"$http_referer" "$http_user_agent"'; server { access_log /var/log/nginx/access.log main; } } ``` 2. **按天分割日志** ```nginx server { access_log /var/log/nginx/access_$year-$month-$day.log main; # 需配合crontab定时任务进行日志切割[^4] } ``` 3. **条件记录** ```nginx # 仅记录4xx/5xx错误 map $status $loggable { ~^[23] 0; default 1; } server { access_log /var/log/nginx/errors.log main if=$loggable; } ``` 4. **缓冲写入** ```nginx access_log /var/log/nginx/access.log main buffer=32k gzip=5 flush=5m; ``` #### 五、日志分析 常用分析命令: ```bash # 统计访问量TOP10 awk '{print $7}' access.log | sort | uniq -c | sort -nr | head -n 10 # 使用GoAccess可视化分析 goaccess access.log -o report.html --log-format=COMBINED ``` #### 六、高级技巧 1.日志输出 ```nginx server { access_log /var/log/nginx/basic.log; access_log /var/log/nginx/debug.log debug_format; } ``` 2. 性能优化建议 - 生产环境建议保持buffer=64k - 高并发场景可设置`open_log_file_cache` - 调试完成后及时关闭debug日志
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值