玩转Nginx:从入门到精通(六)

倾袖 14 2024-12-27

1. 上节回顾

在上一节中,我们通过具体的实践案例,详细讲解了Nginx如何应用于静态资源服务、动静分离、负载均衡及微服务网关。本节将进一步深入,探讨Nginx的运维与监控技术,帮助读者学会如何有效管理和优化Nginx服务。

574e9258d109b3de6e2593bb64cba689820a4ccc.webp


2. 运维与监控

Nginx在生产环境中的高效运维依赖于完善的监控和日志管理。以下内容将从日志配置、实时监控和高可用方案等方面展开详细介绍。


2.1 Nginx日志配置

日志是分析系统运行状态和排查问题的重要工具。Nginx支持访问日志和错误日志两种类型。

2.1.1 配置访问日志

访问日志记录了客户端对服务器的每一次请求:

http {
    log_format main '$remote_addr - $remote_user [$time_local] "$request" '
                    '$status $body_bytes_sent "$http_referer" '
                    '"$http_user_agent" "$http_x_forwarded_for"';
    access_log /var/log/nginx/access.log main;
}
  • log_format:定义日志格式。

  • access_log:指定访问日志文件的位置和格式。

2.1.2 配置错误日志

错误日志记录了服务器运行时的错误信息:

error_log /var/log/nginx/error.log warn;
  • warn:记录警告及以上级别的日志。

  • 日志级别:debug > info > notice > warn > error > crit > alert > emerg


2.2 使用状态监控模块

Nginx提供了内置的stub_status模块,用于监控服务器的基本状态信息。

2.2.1 启用stub_status

在Nginx配置文件中添加如下配置:

server {
    listen 8080;
    server_name localhost;

    location /nginx_status {
        stub_status;
        allow 127.0.0.1;
        deny all;
    }
}
  • stub_status:启用状态监控模块。

  • allowdeny:限制访问,仅允许本地IP访问。

2.2.2 查看监控信息

访问 http://localhost:8080/nginx_status,会显示类似以下的信息:

Active connections: 291 
server accepts handled requests
 128013 128013 147610
Reading: 2 Writing: 5 Waiting: 284
  • Active connections:当前活动连接数。

  • accepts handled requests:总共接收的连接、成功创建的连接及处理的请求数。

  • Reading:读取客户端请求的连接数。

  • Writing:响应客户端的连接数。

  • Waiting:空闲连接数。


2.3 故障排查与高可用
2.3.1 常见故障排查
  1. 服务无法启动:

    • 检查配置文件是否有语法错误:

      nginx -t

  2. 502 Bad Gateway:

    • 后端服务不可用或Nginx与后端的连接配置错误。

  3. 高CPU或内存使用:

    • 查看日志是否有大量的请求或攻击。

    • 使用工具如htoptop排查问题。

2.3.2 高可用配置

Nginx与keepalived结合可实现高可用架构,通过虚拟IP实现主备切换。

示例配置:

  1. 安装keepalived

    sudo apt install keepalived

  2. 配置keepalived.conf

    vrrp_instance VI_1 {
        state MASTER
        interface eth0
        virtual_router_id 51
        priority 100
        advert_int 1
        authentication {
            auth_type PASS
            auth_pass 12345
        }
        virtual_ipaddress {
            192.168.1.100
        }
    }

  3. 启动服务:

    systemctl start keepalived


3. 总结

本节详细讲解了Nginx的运维与监控技术,包括日志配置、实时状态监控和高可用架构的实现。这些内容是保障Nginx在生产环境稳定运行的重要环节。

下一节将重点探讨Nginx的常见问题与解决方案,帮助读者快速应对生产环境中的实际问题。