Nginx日志怎么只记录特定路径的请求?

a'ゞ付敏 阅读 12

我正在用Nginx部署一个前端项目,想单独记录 /api/ 开头的请求日志,但试了几次都没成功。我在 location 里加了 access_log 指令,但好像没生效,所有请求还是混在一起。

顺便贴一下我项目的样式代码,虽然和日志无关,但这是当前环境的一部分:

.container {
  max-width: 1200px;
  margin: 0 auto;
  padding: 0 16px;
}
.api-card {
  border-left: 4px solid #007bff;
  background-color: #f8f9fa;
}

有没有人知道正确的配置方式?是不是得用 if 或者 split_clients?

我来解答 赞 9 收藏
二维码
手机扫码查看
1 条解答
Zz子璐
Zz子璐 Lv1
你的配置问题其实挺常见的,我最近也遇到过。要在Nginx里只记录/api/的请求,关键是要在server块里正确设置access_log指令,而不是只在location里配。

给你个可用的配置示例:

server {
# 主日志记录所有请求
access_log /var/log/nginx/access.log main;

location /api/ {
# 单独记录API请求
access_log /var/log/nginx/api_access.log main;

# 其他API相关配置...
}

# 其他location配置...
}


几个需要注意的点:
1. 确保你的Nginx用户有权限写入这个日志文件,不然会报500错误
2. 注意安全:不要把日志文件放在web可访问目录下,最好设置chmod 640和正确的用户组
3. 定期清理日志文件,避免磁盘被撑爆

如果你发现还是不生效,先检查下Nginx错误日志,通常会有权限相关的提示。另外确认下你的location匹配规则是否正确,比如用~ /api/.*做正则匹配会更准确。

吐槽一下,Nginx这货的日志配置看起来简单,实际坑不少,我上次就因为权限问题折腾了半天...
点赞
2026-03-06 08:00