Nginx 是一款高性能的 Web 服务器和反向代理服务器,广泛应用于各类网站和应用中。在实际运维过程中,Nginx日志配置是排查问题、监控流量和优化性能的关键环节。本文将手把手教你如何配置 Nginx 的访问日志和错误日志,即使是刚接触 Linux 和 Nginx 的小白也能轻松上手。
Nginx 默认提供两种主要日志:
默认情况下,Nginx 的访问日志位于 /var/log/nginx/access.log。你可以通过修改主配置文件(通常是 /etc/nginx/nginx.conf)来自定义日志格式和存储路径。
首先,我们来看一个典型的访问日志配置块:
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;} 上面的 log_format 定义了一个名为 main 的日志格式,其中包含以下常用变量:
$remote_addr:客户端 IP 地址$time_local:请求时间$request:完整的 HTTP 请求行(如 GET /index.html HTTP/1.1)$status:HTTP 响应状态码(如 200、404)$http_user_agent:用户浏览器标识如果你希望为某个特定站点(server 块)单独设置日志,可以在 server 块中添加:
server { listen 80; server_name example.com; access_log /var/log/nginx/example.access.log main; ...} 错误日志用于记录 Nginx 启动、运行或处理请求时发生的异常。其配置更简单,只需指定日志路径和日志级别:
error_log /var/log/nginx/error.log warn; 日志级别从低到高包括:debug、info、notice、warn、error、crit、alert、emerg。级别越高,记录的信息越少但越关键。生产环境中通常使用 warn 或 error 级别。
为了便于日志收集系统(如 ELK、Fluentd)解析,很多团队会将日志输出为 JSON 格式。下面是一个 JSON 日志格式的配置示例:
log_format json_combined escape=json '{' '"time":"$time_iso8601",' '"remote_addr":"$remote_addr",' '"request":"$request",' '"status":$status,' '"body_bytes_sent":$body_bytes_sent,' '"http_user_agent":"$http_user_agent"''}';access_log /var/log/nginx/access.json json_combined; 这样生成的日志就是标准的 JSON 行,非常便于自动化分析。
随着访问量增加,日志文件会迅速膨胀。建议配合 logrotate 工具定期切割和压缩日志。例如,在 /etc/logrotate.d/nginx 中配置:
/var/log/nginx/*.log { daily missingok rotate 52 compress delaycompress notifempty create 0640 www-data adm sharedscripts postrotate [ -f /var/run/nginx.pid ] && kill -USR1 `cat /var/run/nginx.pid` endscript} 通过合理配置 Nginx日志配置、访问日志格式 和 错误日志分析,你可以大幅提升系统可观测性。无论是日常运维还是安全审计,日志都是不可或缺的数据源。希望这篇 Nginx日志实战 教程能帮助你打下坚实基础!
动手试试吧!修改配置后记得执行 nginx -t 测试语法,并用 systemctl reload nginx 重载配置,无需重启服务。
本文由主机测评网于2025-11-27发表在主机测评网_免费VPS_免费云服务器_免费独立服务器,如有疑问,请联系我们。
本文链接:https://vpshk.cn/202511866.html