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 运维中最常用的操作之一。
-
测试配置文件语法
在重载或重启之前,务必先测试配置文件是否有语法错误。这是一个非常好的习惯。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"
)修正配置文件。 -
平滑重载配置文件 (Reload)
当修改了 NGINX 的配置文件(如虚拟主机、代理规则等)后,不需要重启整个服务,使用reload
命令即可。sudo nginx -s reload # 或者使用 systemctl sudo systemctl reload nginx
reload
与restart
的区别:-
reload
:主进程会检查配置语法,如果正确,则启动新的工作进程,并优雅地关闭旧的工作进程。服务不中断,用户体验无感知。 -
restart
:先停止整个 Nginx 服务,再启动。会造成短暂的服务中断。
因此,在绝大多数情况下,修改配置后都应使用
reload
。 -
三、日志处理
-
查看实时访问日志
sudo tail -f /var/log/nginx/access.log
-
查看实时错误日志
sudo tail -f /var/log/nginx/error.log
-
日志切割 (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
-
四、信息查看
-
查看 Nginx 版本
nginx -v
输出:
nginx version: nginx/1.18.0 (Ubuntu)
-
查看 Nginx 版本、配置参数等详细信息
nginx -V
这会显示编译时使用的所有模块和参数,在排查问题时非常有用。
-
查看进程状态
ps aux | grep nginx
可以看到一个 Nginx 主进程 (master process) 和多个工作进程 (worker process)。
常用命令总结(日常使用频率最高)
-
sudo nginx -t
– 修改配置后必用! 测试配置是否正确。 -
sudo systemctl reload nginx
或sudo nginx -s reload
– 重载配置,使更改生效。 -
sudo systemctl status nginx
– 快速查看服务是否在运行。 -
sudo tail -f /var/log/nginx/error.log
– 出现问题时第一时间查看错误日志。 -
sudo systemctl restart nginx
– 当重载无效或安装新模块后,需要完全重启。
记住这个工作流:修改配置 -> nginx -t
测试 -> systemctl reload nginx
重载。