nginx教程第二篇:nginx命令行控制

2024-08-27 23:58

本文主要是介绍nginx教程第二篇:nginx命令行控制,希望对大家解决编程问题提供一定的参考价值,需要的开发者们随着小编来一起学习吧!

在Linux中, 需要使用命令行来控制Nginx服务器的启动与停止、 重载配置文件、 回滚日
志文件、 平滑升级等行为。 默认情况下, Nginx被安装在目录/usr/local/nginx/中, 其二进制文
件路径为/usr/local/nginc/sbin/nginx, 配置文件路径为/usr/local/nginx/conf/nginx.conf。 当然, 在
configure执行时是可以指定把它们安装在不同目录的。

1.默认启动方式

直接执行Nginx二进制程序。 例如:

/usr/local/nginx/sbin/nginx

这时, 会读取默认路径下的配置文件: /usr/local/nginx/conf/nginx.conf

2.指定配置文件启动方式

使用-c参数指定配置文件。 例如:

/usr/local/nginx/sbin/nginx -c tmpnginx.conf

这时, 会读取-c参数后指定的nginx.conf配置文件来启动Nginx

3.另行指定安装目录的启动方式

使用-p参数指定Nginx的安装目录。 例如:

/usr/local/nginx/sbin/nginx -p /usr/local/nginx/
4.另行指定全局配置项的启动方式

可以通过-g参数临时指定一些全局配置项, 以使新的配置项生效。 例如:

/usr/local/nginx/sbin/nginx -g "pid varnginx/test.pid;"

上面这行命令意味着会把pid文件写到varnginx/test.pid中

-g参数的约束条件是指定的配置项不能与默认路径下的nginx.conf中的配置项相冲突, 否
则无法启动。 就像上例那样, 类似这样的配置项: pid logs/nginx.pid, 是不能存在于默认的
nginx.conf中的。

另一个约束条件是, 以-g方式启动的Nginx服务执行其他命令行时, 需要把-g参数也带
上, 否则可能出现配置项不匹配的情形。 例如, 如果要停止Nginx服务, 那么需要执行下面
代码:

/usr/local/nginx/sbin/nginx -g "pid varnginx/test.pid;" -s stop

如果不带上-g"pidvarnginx/test.pid;", 那么找不到pid文件, 也会出现无法停止服务的情
况。

5.测试配置信息是否有错误

在不启动Nginx的情况下, 使用-t参数仅测试配置文件是否有错误。 例如:

/usr/local/nginx/sbin/nginx -t

执行结果中显示配置是否正确。

6.在测试配置阶段不输出信息

测试配置选项时, 使用-q参数可以不把error级别以下的信息输出到屏幕。 例如:

/usr/local/nginx/sbin/nginx -t -q
7.显示版本信息

使用-v参数显示Nginx的版本信息。 例如:

/usr/local/nginx/sbin/nginx -v
8.显示编译阶段的参数

使用-V参数除了可以显示Nginx的版本信息外,还可以显示配置编译阶段的信息, 如GCC编译器的版本、 操作系统的版本、 执行configure时的参数等。 例如:

/usr/local/nginx/sbin/nginx -V
10.快速地停止服务

使用-s stop可以强制停止Nginx服务。 -s参数其实是告诉Nginx程序向正在运行的Nginx服
务发送信号量, Nginx程序通过nginx.pid文件中得到master进程的进程ID, 再向运行中的
master进程发送TERM信号来快速地关闭Nginx服务。 例如:

/usr/local/nginx/sbin/nginx -s stop

实际上, 如果通过kill命令直接向nginx master进程发送TERM或者INT信号, 效果是一样
的。 例如:
先通过ps命令来查看nginx master的进程ID:

computer:root > ps -ef | grep nginx  
root 10800 1 0 02:27 ? 00:00:00 nginx: master process ./nginx
root 10801 10800 0 02:27 ? 00:00:00 nginx: worker process

接下来直接通过kill命令来发送信号:

kill -s SIGTERM 10800

或者:

kill -s SIGINT 10800

上述两条命令的效果与执行usrlocal/nginx/sbin/nginx-s stop是完全一样的

11.“优雅”地停止服务

如果希望Nginx服务可以正常地处理完当前所有请求再停止服务, 那么可以使用-s quit参数来停止服务。 例如:

/usr/local/nginx/sbin/nginx -s quit

该命令与快速停止Nginx服务是有区别的。 当快速停止服务时, worker进程与master进程在收到信号后会立刻跳出循环,退出进程。 而“优雅”地停止服务时, 首先会关闭监听端口,停止接收新的连接, 然后把当前正在处理的连接全部处理完, 最后再退出进程。
与快速停止服务相似, 可以直接发送QUIT信号给master进程来停止服务, 其效果与执行-s quit命令是一样的。 例如:

kill -s SIGQUIT <nginx master pid>

如果希望“优雅”地停止某个worker进程,那么可以通过向该进程发送WINCH信号来停止服务。 例如:

kill -s SIGWINCH <nginx worker pid>
12.使运行中的Nginx重读配置项并生效

使用-s reload参数可以使运行中的Nginx服务重新加载nginx.conf文件。 例如:

/usr/local/nginx/sbin/nginx -s reload

事实上, Nginx会先检查新的配置项是否有误,如果全部正确就以“优雅”的方式关闭,再重新启动Nginx来实现这个目的。 类似的, -s是发送信号, 仍然可以用kill命令发送HUP信号来达到相同的效果。

kill -s SIGHUP <nginx master pid>
13.日志文件回滚

使用-s reopen参数可以重新打开日志文件,这样可以先把当前日志文件改名或转移到其他目录中进行备份, 再重新打开时就会生成新的日志文件。 这个功能使得日志文件不至于过大。 例如:

/usr/local/nginx/sbin/nginx -s reopen

当然, 这与使用kill命令发送USR1信号效果相同。

kill -s SIGUSR1 <nginx master pid>
14.平滑升级Nginx

当Nginx服务升级到新的版本时, 必须要将旧的二进制文件Nginx替换掉, 通常情况下这是需要重启服务的,但Nginx支持不重启服务来完成新版本的平滑升级。
升级时包括以下步骤:

  • 通知正在运行的旧版本Nginx准备升级。通过向master进程发送USR2信号可达到目的。 例如:
kill -s SIGUSR2 <nginx master pid>

这时, 运行中的Nginx会将pid文件重命名,如将/usr/local/nginx/logs/nginx.pid重命名为/usr/local/nginx/logs/nginx.pid.oldbin,这样新的Nginx才有可能启动成功。

  • 启动新版本的Nginx, 可以使用以上介绍过的任意一种启动方法。 这时通过ps命令可以发现新旧版本的Nginx在同时运行。
  • 通过kill命令向旧版本的master进程发送SIGQUIT信号, 以“优雅”的方式关闭旧版本的Nginx。 随后将只有新版本的Nginx服务运行, 此时平滑升级完毕。
15.显示命令行帮助

使用-h或者-?参数会显示支持的所有命令行参数

这篇关于nginx教程第二篇:nginx命令行控制的文章就介绍到这儿,希望我们推荐的文章对编程师们有所帮助!



http://www.chinasem.cn/article/1113150

相关文章

python使用Akshare与Streamlit实现股票估值分析教程(图文代码)

《python使用Akshare与Streamlit实现股票估值分析教程(图文代码)》入职测试中的一道题,要求:从Akshare下载某一个股票近十年的财务报表包括,资产负债表,利润表,现金流量表,保存... 目录一、前言二、核心知识点梳理1、Akshare数据获取2、Pandas数据处理3、Matplotl

Python pandas库自学超详细教程

《Pythonpandas库自学超详细教程》文章介绍了Pandas库的基本功能、安装方法及核心操作,涵盖数据导入(CSV/Excel等)、数据结构(Series、DataFrame)、数据清洗、转换... 目录一、什么是Pandas库(1)、Pandas 应用(2)、Pandas 功能(3)、数据结构二、安

Spring Boot集成/输出/日志级别控制/持久化开发实践

《SpringBoot集成/输出/日志级别控制/持久化开发实践》SpringBoot默认集成Logback,支持灵活日志级别配置(INFO/DEBUG等),输出包含时间戳、级别、类名等信息,并可通过... 目录一、日志概述1.1、Spring Boot日志简介1.2、日志框架与默认配置1.3、日志的核心作用

深度解析Nginx日志分析与499状态码问题解决

《深度解析Nginx日志分析与499状态码问题解决》在Web服务器运维和性能优化过程中,Nginx日志是排查问题的重要依据,本文将围绕Nginx日志分析、499状态码的成因、排查方法及解决方案展开讨论... 目录前言1. Nginx日志基础1.1 Nginx日志存放位置1.2 Nginx日志格式2. 499

2025版mysql8.0.41 winx64 手动安装详细教程

《2025版mysql8.0.41winx64手动安装详细教程》本文指导Windows系统下MySQL安装配置,包含解压、设置环境变量、my.ini配置、初始化密码获取、服务安装与手动启动等步骤,... 目录一、下载安装包二、配置环境变量三、安装配置四、启动 mysql 服务,修改密码一、下载安装包安装地

电脑提示d3dx11_43.dll缺失怎么办? DLL文件丢失的多种修复教程

《电脑提示d3dx11_43.dll缺失怎么办?DLL文件丢失的多种修复教程》在使用电脑玩游戏或运行某些图形处理软件时,有时会遇到系统提示“d3dx11_43.dll缺失”的错误,下面我们就来分享超... 在计算机使用过程中,我们可能会遇到一些错误提示,其中之一就是缺失某个dll文件。其中,d3dx11_4

Linux下在线安装启动VNC教程

《Linux下在线安装启动VNC教程》本文指导在CentOS7上在线安装VNC,包含安装、配置密码、启动/停止、清理重启步骤及注意事项,强调需安装VNC桌面以避免黑屏,并解决端口冲突和目录权限问题... 目录描述安装VNC安装 VNC 桌面可能遇到的问题总结描js述linux中的VNC就类似于Window

Go语言编译环境设置教程

《Go语言编译环境设置教程》Go语言支持高并发(goroutine)、自动垃圾回收,编译为跨平台二进制文件,云原生兼容且社区活跃,开发便捷,内置测试与vet工具辅助检测错误,依赖模块化管理,提升开发效... 目录Go语言优势下载 Go  配置编译环境配置 GOPROXYIDE 设置(VS Code)一些基本

Nginx安全防护的多种方法

《Nginx安全防护的多种方法》在生产环境中,需要隐藏Nginx的版本号,以避免泄漏Nginx的版本,使攻击者不能针对特定版本进行攻击,下面就来介绍一下Nginx安全防护的方法,感兴趣的可以了解一下... 目录核心安全配置1.编译安装 Nginx2.隐藏版本号3.限制危险请求方法4.请求限制(CC攻击防御)

nginx中端口无权限的问题解决

《nginx中端口无权限的问题解决》当Nginx日志报错bind()to80failed(13:Permissiondenied)时,这通常是由于权限不足导致Nginx无法绑定到80端口,下面就来... 目录一、问题原因分析二、解决方案1. 以 root 权限运行 Nginx(不推荐)2. 为 Nginx