在 Nginx 中查看响应时间(请求处理耗时),通常有两种方式:看访问日志里的字段,或者用其他方式统计。下面按常见场景给你说明。
Nginx 本身提供几个和耗时相关的变量:
| 变量 | 含义 |
|---|---|
$request_time |
总响应时间(从客户端建立连接,到 Nginx 发送完响应) |
$upstream_response_time |
后端响应时间(仅反向代理,包含连接+处理) |
$upstream_connect_time |
连接后端耗时 |
$upstream_header_time |
后端返回响应头耗时 |
✅ 最常用的是 $request_time
默认日志格式通常没有响应时间,需要自定义 log_format。
示例(nginx.conf):
http {
log_format main '$remote_addr - $remote_user [$time_local] '
'"$request" $status '
'rt=$request_time urt=$upstream_response_time';
access_log /var/log/nginx/access.log main;
}
然后平滑重启:
nginx -s reload
日志示例:
192.168.1.10 - - [12/Jan/2026:10:00:00 +0800] "GET /api/test HTTP/1.1" 200 rt=0.123 urt=0.100
解释:
rt=0.123 → 总响应时间 0.123 秒urt=0.100 → 后端耗时 0.1 秒如果日志里已经有响应时间字段,可以直接统计。
awk '{print $NF}' access.log | sort -nr | head -10
(假设响应时间在最后一位)
awk '{sum+=$NF; n++} END {print sum/n}' access.log
goaccess 可视化看响应时间(推荐)goaccess access.log -o report.html --log-format=COMBINED
支持:
如果你是:
用户 → Nginx → 后端(Java / PHP / Python)
那么:
request_time ≠ 后端时间upstream_response_time✅ 最快方法
在
log_format里加$request_time,然后看日志
✅ 排查后端慢
看
$upstream_response_time
✅ 不想改配置
用
goaccess或awk统计
如果你愿意,可以把你的 Nginx 日志格式贴出来,我可以直接告诉你该怎么看、怎么改。