本文最后更新于 2024年7月5日 下午
Nginx 常用命令合集
在 Ubuntu22.04 操作系统上,我们使用 nginx 需要不断使用其相关命令,下面介绍一下常用的几个命令
nginx -?,-h
我们用 nginx -h
或 nginx -?
来查看当前 nginx 的版本和全部的指令简介:
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 root@dwj2:~nginx version: nginx/1 .18 .0 (Ubuntu) Usage: nginx [-?hvVtTq] [-s signal] [-c filename] [-p prefix] [-g directives] Options: -?,-h : this help -v : show version and exit -V : show version and configure options then exit -t : test configuration and exit -T : test configuration, dump it and exit -q : suppress non-error messages during configuration testing -s signal : send signal to a master process: stop, quit, reopen, reload -p prefix : set prefix path (default: /usr/share/nginx/) -c filename : set configuration file (default: /etc/nginx/nginx.conf) -g directives : set global directives out of configuration file
nginx -v
我们用 nginx -v
来查看当前 nginx 的版本信息,往往用来检测 nginx 是否安装成功:
1 2 root@dwj2:~nginx version: nginx/1 .18 .0 (Ubuntu)
nginx -V
我们用 nginx -V
来查看当前 nginx 版本信息,同时显示配置信息,往往用来查看配置文件的存放路径:
1 2 3 4 5 root@dwj2:~nginx version: nginx/1 .18 .0 (Ubuntu) built with OpenSSL 3 .0 .2 15 Mar 2022 TLS SNI support enabled configure arguments: --with-cc-opt='-g -O2 -ffile-prefix-map=/build/nginx-zctdR4/nginx-1.18.0=. -flto=auto -ffat-lto-objects -flto=auto -ffat-lto-objects -fstack-protector-strong -Wformat -Werror=format-security -fPIC -Wdate-time -D_FORTIFY_SOURCE=2' --with-ld-opt='-Wl,-Bsymbolic-functions -flto=auto -ffat-lto-objects -flto=auto -Wl,-z,relro -Wl,-z,now -fPIC' --prefix=/usr/share/nginx --conf-path=/etc/nginx/nginx.conf --http-log-path=/var/log/nginx/access.log --error -log-path=/var/log/nginx/error .log --lock-path=/var/lock/nginx.lock --pid-path=/run/nginx.pid --modules-path=/usr/lib/nginx/modules --http-client-body-temp-path=/var/lib/nginx/body --http-fastcgi-temp-path=/var/lib/nginx/fastcgi --http-proxy-temp-path=/var/lib/nginx/proxy --http-scgi-temp-path=/var/lib/nginx/scgi --http-uwsgi-temp-path=/var/lib/nginx/uwsgi --with-compat --with-debug --with-pcre-jit --with-http_ssl_module --with-http_stub_status_module --with-http_realip_module --with-http_auth_request_module --with-http_v2_module --with-http_dav_module --with-http_slice_module --with-threads --add-dynamic-module=/build/nginx-zctdR4/nginx-1 .18 .0 /debian/modules/http-geoip2 --with-http_addition_module --with-http_gunzip_module --with-http_gzip_static_module --with-http_sub_module
我们将上面的内容进行分行介绍
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 nginx version: nginx/1 .18 .0 (Ubuntu) built with OpenSSL 3 .0 .2 15 Mar 2022 TLS SNI support enabled configure arguments: --with-cc-opt=' -g # 在编译过程中生成调试信息 -O2 # 启用优化等级 2,以提高编译后代码的执行效率 # 指定了一个文件路径映射,用于在编译时将文件路径中的指定前缀替换成另一个前缀 -ffile-prefix-map=/build/nginx-zctdR4/nginx-1.18.0=. -flto=auto # 启用链接时优化 (Link Time Optimization),以在链接阶段进一步优化代码 -ffat-lto-objects # 生成链接时优化的对象文件 -fstack-protector-strong # 启用强栈保护机制,以保护程序免受栈溢出攻击 -Wformat -Werror=format-security # 开启对格式化字符串的检查,并将格式化字符串的安全性问题视为错误 -fPIC # 生成位置无关代码,通常用于动态链接库的编译 -Wdate-time # 生成有关日期时间的警告 -D_FORTIFY_SOURCE=2 # 启用堆栈和字符串长度检查,用于提高程序的安全性 ' --with-ld-opt=' -Wl,-Bsymbolic-functions # 通过 --export-dynamic 在 ELF 输出中创建动态符号表 -flto=auto # 启用链接时优化 -ffat-lto-objects # 生成链接时优化的对象文件 -Wl,-z,relro # 在可执行文件中启用 RELRO (Relocation Read-Only),以增加对 GOT (Global Offset Table) 的保护 -Wl,-z,now # 立即解析动态链接库,以减少动态链接的时间延迟 -fPIC # 同样是为了生成位置无关代码,以支持动态链接 ' --prefix=/usr/share/nginx --conf-path=/etc/nginx/nginx.conf --http-log-path=/var/log/nginx/access.log --error -log-path=/var/log/nginx/error .log --lock-path=/var/lock/nginx.lock --pid-path=/run/nginx.pid --modules-path=/usr/lib/nginx/modules --http-client-body-temp-path=/var/lib/nginx/body --http-fastcgi-temp-path=/var/lib/nginx/fastcgi --http-proxy-temp-path=/var/lib/nginx/proxy --http-scgi-temp-path=/var/lib/nginx/scgi --http-uwsgi-temp-path=/var/lib/nginx/uwsgi --with-compat --with-debug --with-pcre-jit --with-http_ssl_module --with-http_stub_status_module --with-http_realip_module --with-http_auth_request_module --with-http_v2_module --with-http_dav_module --with-http_slice_module --with-threads --add-dynamic-module=/build/nginx-zctdR4/nginx-1 .18 .0 /debian/modules/http-geoip2 --with-http_addition_module --with-http_gunzip_module --with-http_gzip_static_module --with-http_sub_module
nginx -t
我们用 nginx -t
来测试配置文件是否格式正确:
成功时:
1 2 3 root@dwj2:~ nginx: the configuration file /etc/nginx/nginx.conf syntax is ok nginx: configuration file /etc/nginx/nginx.conf test is successful
失败时:提示报错信息
1 2 3 root@dwj2:~ nginx: [emerg] directive "include" is not terminated by ";" in /etc/nginx/nginx.conf:6 nginx: configuration file /etc/nginx/nginx.conf test failed
nginx -T
我们用 nginx -T
来测试配置文件是否格式正确,同时将所有的配置信息输出到屏幕上,我们可以对输出信息转存用来备份配置:
1 2 3 4 5 6 root@dwj2:~ nginx: the configuration file /etc/nginx/nginx.conf syntax is ok nginx: configuration file /etc/nginx/nginx.conf test is successful ...
nginx -q
我们用 nginx -q
来测试配置,与 -t 和 -T 不同的是,该命令不会显示非错误信息从而简化输出
1 2 3 4 5 6 7 8 9 10 11 12 root@dwj2:~ nginx: [emerg] bind() to 0.0.0.0:80 failed (98 : Unknown error ) nginx: [emerg] bind() to [::]:80 failed (98 : Unknown error ) nginx: [emerg] bind() to 0.0.0.0:80 failed (98 : Unknown error ) nginx: [emerg] bind() to [::]:80 failed (98 : Unknown error ) nginx: [emerg] bind() to 0.0.0.0:80 failed (98 : Unknown error ) nginx: [emerg] bind() to [::]:80 failed (98 : Unknown error ) nginx: [emerg] bind() to 0.0.0.0:80 failed (98 : Unknown error ) nginx: [emerg] bind() to [::]:80 failed (98 : Unknown error ) nginx: [emerg] bind() to 0.0.0.0:80 failed (98 : Unknown error ) nginx: [emerg] bind() to [::]:80 failed (98 : Unknown error ) nginx: [emerg] still could not bind()
nginx -s <signal>
我们使用 nginx -s <signal>
相关指令来对控制 nginx 的 master 进程
nginx -s stop
我们使用 nginx -s stop
指令来停止 nginx 服务器,使其不再处理新的请求,并且关闭已有的连接
nginx -s quit
我们使用 nginx -s quit
指令来优雅地关闭 nginx 服务器。与 stop
信号不同,quit
信号会等待当前请求处理完毕后再关闭服务器,这样可以确保不丢失任何已接收但未处理完的请求
nginx -s reopen
我们使用 nginx -s reopen
指令来重新打开 nginx 的日志文件。重新打开日志文件可以在不重启Nginx的情况下切换日志文件,这在日志轮换时非常有用
nginx -s reload
我们使用 nginx -s reload
指令来重新加载Nginx的配置文件,而无需停止服务器。这使得在不停止服务的情况下更新配置成为可能,可以避免中断用户的访问
nginx -p <prefix>
我们使用 nginx -s <prefix>
指令来配置 nginx 的工作路径
nginx -c <filename>
我们使用 nginx -s <prefix>
指令来指定 nginx 的配置文件路径
nginx -g <directives>
我们使用 nginx -s <prefix>
指令来指定全局指令而不会写入配置文件中