nginx的一些常用命令笔记

NGINX 的常用命令可以分为几个类别:服务管理命令配置文件测试与重载日志处理 以及 信息查看

一、服务管理命令 (启动、停止、重启)

这些命令用于控制 NGINX 服务进程。请根据您的系统选择对应的命令,现代 Linux 发行版通常使用 systemctl

使用 systemctl (推荐用于 Systemd 系统,如 CentOS 7+/Ubuntu 16.04+)

命令 描述
sudo systemctl start nginx 启动 Nginx 服务
sudo systemctl stop nginx 停止 Nginx 服务(立即停止)
sudo systemctl restart nginx 重启 Nginx 服务(先停止再启动,会短暂中断服务)
sudo systemctl reload nginx 平滑重载(见下文详解)
sudo systemctl enable nginx 设置开机自动启动
sudo systemctl disable nginx 取消开机自动启动
sudo systemctl status nginx 查看 Nginx 服务状态

使用 service (旧版 SysVinit 系统)

命令 描述
sudo service nginx start 启动 Nginx
sudo service nginx stop 停止 Nginx
sudo service nginx restart 重启 Nginx
sudo service nginx reload 平滑重载 Nginx
sudo service nginx status 查看状态

使用 Nginx 自带命令行

命令 描述
sudo nginx 启动 Nginx(如果未运行)
sudo nginx -s stop 立即停止(强制终止,-s quit 是优雅停止)
sudo nginx -s quit 优雅停止(会处理完当前请求后再停止)
sudo nginx -s reload 平滑重载配置文件
sudo nginx -s reopen 重新打开日志文件(常用于日志切割)

二、配置文件测试与重载

这是 NGINX 运维中最常用的操作之一。

  1. 测试配置文件语法
    在重载或重启之前,务必先测试配置文件是否有语法错误。这是一个非常好的习惯。

    sudo nginx -t

    或者更详细地:

    sudo nginx -T # 测试并打印出所有有效配置

    输出示例(成功)

    nginx: the configuration file /etc/nginx/nginx.conf syntax is ok
    nginx: configuration file /etc/nginx/nginx.conf test is successful

    输出示例(失败)

    nginx: [emerg] unknown directive "server_nam" in /etc/nginx/conf.d/test.conf:2
    nginx: configuration file /etc/nginx/nginx.conf test failed

    如果失败,请根据错误信息(如上面的 unknown directive "server_nam")修正配置文件。

  2. 平滑重载配置文件 (Reload)
    当修改了 NGINX 的配置文件(如虚拟主机、代理规则等)后,不需要重启整个服务,使用 reload 命令即可。

    sudo nginx -s reload
    # 或者使用 systemctl
    sudo systemctl reload nginx

    reload 与 restart 的区别

    • reload:主进程会检查配置语法,如果正确,则启动新的工作进程,并优雅地关闭旧的工作进程。服务不中断,用户体验无感知。

    • restart:先停止整个 Nginx 服务,再启动。会造成短暂的服务中断

    因此,在绝大多数情况下,修改配置后都应使用 reload


三、日志处理

  1. 查看实时访问日志

    sudo tail -f /var/log/nginx/access.log
  2. 查看实时错误日志

    sudo tail -f /var/log/nginx/error.log
  3. 日志切割 (Log Rotation)
    当日志文件过大时,需要对其进行切割。使用 logrotate 工具是标准做法。

    • NGINX 自带的 -s reopen 命令通常与 logrotate 配合使用。

    • 通常你不需要手动执行,因为系统默认的 logrotate 配置会每天自动处理 NGINX 日志。

    • 手动切割命令:

      # 1. 重命名旧日志文件(例如,通过 logrotate 或手动)
      sudo mv /var/log/nginx/access.log /var/log/nginx/access.log.old
      # 2. 创建新日志文件并设置权限
      sudo touch /var/log/nginx/access.log
      # 3. 让 Nginx 重新打开日志文件(开始向新文件写入)
      sudo nginx -s reopen

四、信息查看

  1. 查看 Nginx 版本

    nginx -v

    输出:nginx version: nginx/1.18.0 (Ubuntu)

  2. 查看 Nginx 版本、配置参数等详细信息

    nginx -V

    这会显示编译时使用的所有模块和参数,在排查问题时非常有用。

  3. 查看进程状态

    ps aux | grep nginx

    可以看到一个 Nginx 主进程 (master process) 和多个工作进程 (worker process)


常用命令总结(日常使用频率最高)

  1. sudo nginx -t – 修改配置后必用! 测试配置是否正确。

  2. sudo systemctl reload nginx 或 sudo nginx -s reload – 重载配置,使更改生效。

  3. sudo systemctl status nginx – 快速查看服务是否在运行。

  4. sudo tail -f /var/log/nginx/error.log – 出现问题时第一时间查看错误日志。

  5. sudo systemctl restart nginx – 当重载无效或安装新模块后,需要完全重启。

记住这个工作流:修改配置 -> nginx -t 测试 -> systemctl reload nginx 重载

发表评论

您的邮箱地址不会被公开。 必填项已用 * 标注

滚动至顶部
×
问题求助