nginx作为一款高性能的HTTP和反向代理服务器,其命令行操作是运维和开发人员必备技能,掌握nginx命令不仅能高效管理服务,还能快速排查问题,以下从常用命令到进阶操作,结合场景说明其具体用法。

基础服务控制命令
nginx的核心服务控制命令主要包括启动、停止、重载等,这些命令需要nginx已正确安装,且配置文件无语法错误。
启动nginx
直接执行nginx命令即可启动服务,默认使用nginx.conf配置文件(路径为/usr/local/nginx/conf/nginx.conf或/etc/nginx/nginx.conf,取决于安装方式):
nginx
若指定配置文件,可通过-c参数:
nginx -c /path/to/custom.conf
启动成功后,可通过ps aux | grep nginx查看进程,或访问80端口确认服务状态。

停止nginx
停止服务分为快速停止和优雅停止两种方式。
- 快速停止:强制终止所有nginx进程,可能导致正在处理的请求中断:
nginx -s stop
- 优雅停止:等待当前请求处理完成后再关闭进程,推荐使用:
nginx -s quit
重载配置
修改配置文件后,需重载nginx以使新配置生效,此过程不会影响正在处理的请求:
nginx -s reload
重载前建议先检查配置语法是否正确,避免因配置错误导致服务异常。
重新打开日志文件
当日志文件被轮转(如通过logrotate)后,nginx需重新打开日志文件句柄,避免写入错误:

nginx -s reopen
配置文件检查与测试命令
nginx配置文件的语法正确性是服务稳定运行的前提,以下命令用于验证配置。
检查配置语法
执行nginx -t会检查配置文件语法并输出结果,若成功会显示“syntax is ok”和“test is successful”:
nginx -t
可指定配置文件路径:
nginx -t -c /path/to/test.conf
若配置错误,命令会提示具体错误行及原因,便于快速定位问题。
显示配置文件内容
使用-T参数会打印当前生效的配置内容(包括包含的子配置文件),并保存到指定文件:
nginx -T > /tmp/nginx_config.conf
而-V参数可显示nginx版本、编译参数及配置文件路径:
nginx -V
进程管理与信号控制
nginx通过信号控制工作进程的行为,需结合kill命令或nginx内置信号选项使用。
发送信号给nginx进程
- 主进程信号:通过
nginx -s signal发送信号,如前述的stop、reload等。 - 直接向进程发送信号:先获取nginx主进程PID(默认为1号进程),再发送信号:
kill -QUIT $(cat /var/run/nginx.pid) # 优雅停止 kill -HUP $(cat /var/run/nginx.pid) # 重载配置 kill -WINCH $(cat /var/run/nginx.pid) # 优雅关闭工作进程,不重启主进程
平滑升级nginx
当需要升级nginx版本时,可通过以下步骤实现平滑升级:
- 编译新版本nginx,保留旧版配置文件;
- 发送
USR2信号给旧主进程,旧主进程会生成新的子进程; - 发送
QUIT信号给旧主进程,关闭旧工作进程; - 若需回滚,发送
HUP信号给旧主进程,恢复旧版进程。
调试与性能优化命令
开启调试模式
编译nginx时需添加--with-debug参数,运行时可通过error_log设置debug级别日志:
error_log /var/log/nginx/error.log debug;
调试模式下日志会输出详细信息,但性能会受影响,排查问题后需关闭。
查看连接状态
通过nginx -V可查看是否启用--with-http_stub_status_module模块,若启用,在配置中添加status location:
location /nginx_status {
stub_status on;
allow 127.0.0.1;
deny all;
}
访问该地址可显示当前连接数、accepts、handled等指标。
限制工作进程数
通过worker_processes参数设置工作进程数,通常设置为CPU核心数:
worker_processes auto; # 自动检测CPU核心数
常用命令参数速查表
| 参数 | 说明 | 示例 |
|---|---|---|
-c |
指定配置文件路径 | nginx -c /etc/nginx.conf |
-t |
检查配置语法 | nginx -t |
-s signal |
发送信号(stop/quit/reload等) | nginx -s reload |
-T |
打印完整配置并保存 | nginx -T > /tmp/config |
-V |
显示版本和编译参数 | nginx -V |
-p |
指定nginx prefix路径 | nginx -p /usr/local/nginx |
-g |
设置全局指令 | nginx -g 'daemon off;' |
相关问答FAQs
Q1: 修改nginx配置后,重载配置失败,提示“bind() to 0.0.0.0:80 failed (98: Address already in use)”,如何解决?
A: 此错误通常是由于端口被占用导致,可通过netstat -tlnp | grep :80查看占用端口的进程,若为nginx旧进程,可先执行nginx -s stop再重载;若为其他程序,需停止该程序或修改nginx监听端口,检查配置文件中是否重复定义了server块监听同一端口。
Q2: 如何查看nginx的当前连接数和请求处理情况?
A: 若nginx编译时启用了http_stub_status_module模块,可通过配置stub_status on的location页面查看实时连接状态(如上文中/nginx_status),可结合awk命令分析access日志,统计当前活跃连接数:
tail -f /var/log/nginx/access.log | awk '{print $1}' | sort | uniq -c | sort -nr
此命令可统计每个IP的请求数,帮助识别异常访问。
