Nginx访问日志配置详细说明以及案例
Nginx访问日志配置可以通过log_format
和access_log
指令来实现。以下是详细说明和案例:
1. log_format
指令
log_format
用于定义日志的格式。语法如下:
log_format 格式名称 '日志格式';
格式名称:自定义的日志格式名称。
日志格式:使用Nginx内置变量定义日志内容。
常用变量:
$remote_addr
:客户端IP地址。$remote_user
:客户端用户名(用于基本认证)。$time_local
:访问时间。$request
:请求行(如GET /index.html HTTP/1.1
)。$status
:响应状态码(如200、404)。$body_bytes_sent
:发送给客户端的字节数。$http_referer
:请求来源(Referer)。$http_user_agent
:客户端浏览器信息。$http_x_forwarded_for
:客户端真实IP(通过代理时)。
2. access_log
指令
access_log
用于指定日志文件的路径和使用的日志格式。语法如下:
access_log 日志文件路径 格式名称;
日志文件路径:日志文件的存储路径。
格式名称:
log_format
中定义的格式名称。
3. 案例
以下是一个完整的Nginx访问日志配置案例:
http { # 定义日志格式 log_format main '$remote_addr - $remote_user [$time_local] "$request" ' '$status $body_bytes_sent "$http_referer" ' '"$http_user_agent" "$http_x_forwarded_for"'; # 指定日志文件路径和格式 access_log /var/log/nginx/access.log main; server { listen 80; server_name example.com; location / { root /usr/share/nginx/html; index index.html; } } }
4. 解释
log_format main
:定义了一个名为main
的日志格式,包含客户端IP、时间、请求、状态码、发送字节数、Referer、User-Agent和真实IP。access_log /var/log/nginx/access.log main
:将访问日志写入/var/log/nginx/access.log
文件,并使用main
格式。
5. 日志轮转
为了防止日志文件过大,可以使用logrotate
工具进行日志轮转。示例配置:
/var/log/nginx/access.log { daily rotate 7 compress delaycompress missingok notifempty create 0640 www-data adm sharedscripts postrotate /usr/sbin/nginx -s reload endscript }
6. 总结
通过log_format
和access_log
指令,可以灵活配置Nginx访问日志的格式和存储路径。结合logrotate
工具,可以实现日志的自动轮转和管理。
本篇文章内容来源于:Nginx访问日志配置详细说明以及案例
声明:本站所有文章资源内容,如无特殊说明或标注,均为采集网络资源。如若本站内容侵犯了原著者的合法权益,可联系本站删除。