当前位置: 首页 > 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 .
    
http://www.xdnf.cn/news/279091.html

相关文章:

  • Matlab/Simulink - BLDC直流无刷电机仿真基础教程(七) - 波形解析专题P2
  • Java 中使用 Callable 创建线程的方法
  • FastApi快速实践
  • React class 的组件库与函数组件适配集成
  • C++函数总结
  • 【Java学习笔记】方法重载
  • 以太坊智能合约开发框架:Hardhat v2 核心功能从入门到基础教程
  • 深入浅出数据库管理系统
  • 工程师 - 汽车分类
  • 【AI面试准备】掌握常规的性能、自动化等测试技术,并在工作中熟练应用
  • Jenkis安装、配置及账号权限分配保姆级教程
  • 高性能 WEB 服务器 Nginx:多虚拟主机实现!
  • llfc项目TCP服务器笔记
  • Linux常用命令30——groupadd创建新的用户组
  • 状态值函数与状态-动作值函数
  • MVP架构梳理
  • Dubbo(95)如何在社交网络中应用Dubbo?
  • 注意力机制
  • 2025年PMP 学习一
  • 文章记单词 | 第60篇(六级)
  • mysql中int(1) 和 int(10) 有什么区别?
  • STM32GPIO输入实战-按键key模板及移植
  • I.MX6U的GPIO配置和LED点灯实验。
  • leetcode:最小覆盖字符串
  • 【操作系统】吸烟者问题
  • NHANES指标推荐:LC9
  • Android第四次面试总结之Java基础篇(补充)
  • 【NTN 卫星通信】NTN关键问题的一些解决方法(一)
  • 55认知干货:深空产业
  • 2022年第十三届蓝桥杯省赛B组Java题解