菜鸟科技网

nginx命令大全有哪些常用指令?

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

nginx命令大全有哪些常用指令?-图1
(图片来源网络,侵删)

基础服务控制命令

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命令大全有哪些常用指令?-图2
(图片来源网络,侵删)

停止nginx
停止服务分为快速停止和优雅停止两种方式。

  • 快速停止:强制终止所有nginx进程,可能导致正在处理的请求中断:
    nginx -s stop
  • 优雅停止:等待当前请求处理完成后再关闭进程,推荐使用:
    nginx -s quit

重载配置
修改配置文件后,需重载nginx以使新配置生效,此过程不会影响正在处理的请求:

nginx -s reload

重载前建议先检查配置语法是否正确,避免因配置错误导致服务异常。

重新打开日志文件
当日志文件被轮转(如通过logrotate)后,nginx需重新打开日志文件句柄,避免写入错误:

nginx命令大全有哪些常用指令?-图3
(图片来源网络,侵删)
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版本时,可通过以下步骤实现平滑升级:

  1. 编译新版本nginx,保留旧版配置文件;
  2. 发送USR2信号给旧主进程,旧主进程会生成新的子进程;
  3. 发送QUIT信号给旧主进程,关闭旧工作进程;
  4. 若需回滚,发送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的请求数,帮助识别异常访问。

分享:
扫描分享到社交APP
上一篇
下一篇