选择Nginx日志格式需结合业务需求,以下为常见方案及要点:
默认格式(combined)
记录IP、时间、请求、状态码、响应大小等基础信息,适用于常规访问分析,如log_format main '$remote_addr - $remote_user [$time_local] "$request" $status $body_bytes_sent "$http_referer" "$http_user_agent"';。
精简格式(减少冗余)
仅保留关键字段(如IP、请求、状态码),节省存储空间,例如log_format simple 'remote_addr - request status';。
详细分析格式
添加性能指标(请求时间、上游响应时间)、协议细节(SSL/TLS版本)等,用于深度监控,如log_format detailed '$remote_addr - $request $status $request_time $upstream_response_time $ssl_protocol';。
按场景拆分格式
log_format static 'remote_addr - [time_local] "$request" $status';。log_format api '$remote_addr - $http_authorization $request $status $upstream_addr';。特殊需求格式
log_format main_json escape=json '{ "timestamp": "$time_iso8601", "remote_addr": "$remote_addr", "request": "$request" }';。map指令过滤特定请求(如跳过健康检查),如map $request_uri $loggable { default 1; ~*/healthcheck 0; },再配合access_log if=$loggable;。配置建议:
http块定义全局格式,在server或location块按需引用。logrotate定期切割日志,避免文件过大。参考来源: