Nginx 默认 access_log 不记录 User-Agent,需在 log_format 中添加 $http_user_agent 变量(全小写、下划线连接)并启用该格式;User-Agent 字符串较长且可伪造,需注意日志体积与安全性。

默认情况下,Nginx 的 access_log 不记录 User-Agent 字段。要让它出现在日志中,需自定义日志格式并启用该变量。
在 log_format 中添加 $http_user_agent
Nginx 使用 log_format 指令定义日志结构。只需在格式中加入 $http_user_agent 变量即可捕获请求头中的 User-Agent 值。
- 该变量名区分大小写,必须写作
$http_user_agent(下划线连接,全小写) - 它对应 HTTP 请求头里的
User-Agent字段,若客户端未发送则记录为空字符串 - 建议放在日志格式末尾,避免干扰其他字段解析
示例配置
在 http 块中定义新格式:
使用tbot机器ID身份文件配合tsh CLI,通过Teleport访问控制SSH登录托管主机或执行远程命令。
然后在 server 或 location 块中启用:
注意事项
- User-Agent 字符串通常较长(尤其含浏览器、系统、设备信息),可能显著增大日志体积
- 部分爬虫或恶意请求会伪造 User-Agent,不能作为唯一可信标识
- 若需过滤敏感信息(如手机型号、精确版本号),需配合日志分析工具后期处理
- 重启 Nginx 后配置才生效:
nginx -t && nginx -s reload
验证是否生效
发起一次带 User-Agent 的请求(如用 curl):
curl -H "User-Agent: TestBot/1.0" http://your-site.com/检查日志文件最后一行,应看到类似:
127.0.0.1 - - [10/Jan/2024:15:22:33 +0000] "GET / HTTP/1.1" 200 612 "-" "TestBot/1.0"

















