当前位置: 首页 > news >正文

精品,CentOS7.9 Yum安装Nginx,并配置JSON日志格式

文章目录

      • 1. 安装 Nginx
        • 1.1 添加 Nginx 官方仓库
        • 1.2 安装 Nginx
      • 2. 启动 Nginx 并设置开机自启
      • 3. 配置 JSON 日志格式
        • 3.1 编辑 Nginx 配置文件
        • 3.2 在 `http` 块中添加 JSON 日志格式
        • 3.3 应用 JSON 格式到访问日志
      • 4. 验证配置文件并重启 Nginx
      • 5. 测试 JSON 日志格式
        • 5.1 发送测试请求
        • 5.2 查看日志内容
      • 6. 高级配置(可选)
        • 6.1 日志自动切割
        • 6.2 扩展日志字段
      • 总结

1. 安装 Nginx

1.1 添加 Nginx 官方仓库

CentOS 默认仓库中的 Nginx 版本较旧,建议添加官方仓库:

# 安装 EPEL 仓库(基础依赖)
sudo yum install epel-release# 添加 Nginx 官方仓库
sudo rpm -Uvh http://nginx.org/packages/centos/7/noarch/RPMS/nginx-release-centos-7-0.el7.ngx.noarch.rpm# 更新仓库缓存
sudo yum clean all
sudo yum makecache
1.2 安装 Nginx
sudo yum install nginx

2. 启动 Nginx 并设置开机自启

# 启动服务
sudo systemctl start nginx# 设置开机自启
sudo systemctl enable nginx# 确认状态
sudo systemctl status nginx

3. 配置 JSON 日志格式

3.1 编辑 Nginx 配置文件
sudo vim /etc/nginx/nginx.conf
3.2 在 http 块中添加 JSON 日志格式

找到 http { ... } 块,新增以下内容:

http {# 默认日志格式(可选保留)log_format main '$remote_addr - $remote_user [$time_local] "$request" ''$status $body_bytes_sent "$http_referer" ''"$http_user_agent" "$http_x_forwarded_for"';# 新增 JSON 日志格式(使用 escape=json 转义特殊字符)log_format json_combined escape=json'{''"time_local": "$time_iso8601", ''"remote_addr": "$remote_addr", ''"remote_user": "$remote_user", ''"request": "$request", ''"status": "$status", ''"body_bytes_sent": "$body_bytes_sent", ''"http_referer": "$http_referer", ''"http_user_agent": "$http_user_agent", ''"http_x_forwarded_for": "$http_x_forwarded_for", ''"request_time": "$request_time", ''"upstream_response_time": "$upstream_response_time"''}';# 其他配置...
}
3.3 应用 JSON 格式到访问日志

server 或全局 http 块中修改 access_log 路径:

server {listen 80;server_name _;# 使用 JSON 格式日志access_log /var/log/nginx/access.json.log json_combined;# 其他配置...
}

4. 验证配置文件并重启 Nginx

# 检查配置语法
sudo nginx -t# 重启 Nginx 生效
sudo systemctl restart nginx

5. 测试 JSON 日志格式

5.1 发送测试请求
curl http://localhost
5.2 查看日志内容
sudo tail -f /var/log/nginx/access.json.log

输出应类似:

{"time_local": "2024-05-20T12:34:56+08:00","remote_addr": "192.168.1.100","remote_user": "-","request": "GET / HTTP/1.1","status": "200","body_bytes_sent": "612","http_referer": "-","http_user_agent": "curl/7.76.1","http_x_forwarded_for": "-","request_time": "0.002","upstream_response_time": "0.001"
}

6. 高级配置(可选)

6.1 日志自动切割

使用 logrotate 管理日志文件:

sudo vim /etc/logrotate.d/nginx

添加以下内容:

/var/log/nginx/*.log {dailymissingokrotate 30compressdelaycompressnotifemptycreate 640 nginx admsharedscriptspostrotateif [ -f /var/run/nginx.pid ]; thenkill -USR1 `cat /var/run/nginx.pid`fiendscript
}
6.2 扩展日志字段

根据需要修改 json_combined 格式,添加更多变量(如 $host$server_name 等)。


总结

  • 关键点:通过 log_format 定义 JSON 结构,使用 escape=json 确保字符转义。
  • 日志路径:默认日志文件为 /var/log/nginx/access.json.log
  • 验证工具:可使用 jq 命令格式化查看 JSON 日志:
    sudo apt install jq  # Debian/Ubuntu
    sudo yum install jq  # CentOS
    sudo tail -f /var/log/nginx/access.json.log | jq .
    

相关文章:

  • word页眉去掉线
  • ES类迁移方法
  • 字符串问题c++
  • 以太坊智能合约开发框架:Hardhat v2 核心功能从入门到基础教程
  • uniswap v4 hooks标志位
  • set autotrace报错
  • 模型部署——cuda编程入门
  • SpringMVC——第五章:视图View
  • qml显示视频帧(QQuickImageProvider)
  • 58认知干货:创业经验分享及企业形式的汇总
  • 【操作系统】深入理解内存管理:从虚拟内存到OOM Killer
  • 从实列中学习linux shell12 通过Shell脚本来优化MySQL数据库性能,特别是慢SQL跟踪和索引优化
  • Java学习手册:MyBatis 框架作用详解
  • 【LLM】deepseek R1之GRPO训练笔记(持续更新)
  • Axure打开html文件失败,解决方案:
  • Three.js在vue中的使用(二)-动画、材质
  • 微服务框架选型
  • 小白机器人假想:分布式关节控制——机器人运动的未来模式?
  • 数字化时代下,软件测试中的渗透测试是如何保障安全的?
  • C# 方法(返回值、返回语句和void方法)
  • 建邦高科赴港上市,大股东陈子淳系山东建邦集团董事长陈箭之子
  • 上海成五一国内最热门的入境游目的地,国际消费明显提升
  • 环球马术冠军赛圆满落幕,是马术盛宴更是中国马产业强大引擎
  • 爱彼迎:一季度总收入约23亿美元,将拓展住宿以外的新领域
  • 金科股份:因信披违规,公司及董事长、总裁、财务负责人等收到行政监管措施决定书
  • 航海王亚洲巡展、工厂店直销……上海多区推出“五五购物节”活动