Nginx4之Nginx命令的基本使用

1.Nginx命令介绍及基本使用

	注:通过源码安装的Nginx,要访问Nginx二进制文件也就是访问Nginx命令是要带绝对路劲的,但是由于我在安装的时候已经做了软连接: ln -s /opt/app/nginx/sbin/nginx /usr/bin/ ,所以可以在命令行正常使用它。
	
	#查看nginx选项
	$ nginx -h
	nginx version: nginx/1.18.0
	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		#指定操作, 有4个操作  stop, quit, reopen, reload 例如: nginx -s stop 就是停止Nginx
	  -p prefix     : set prefix path (default: /opt/app/nginx/)	#设置命令路劲
	  -c filename   : set configuration file (default: conf/nginx.conf)	#指定配置文件,如果有其他配置文件也可以使用它进行指定
	  
	  -g directives : set global directives out of configuration file	#设置全局指令

2.常见用途

		获取nginx版本或编译信息: nginx -v / nginx -V
		发生信号:
			nginx -s stop	#立刻停止运行nginx
			nginx -s quit		#优雅的停止nginx,就不会立即关闭nginx,而是等待nginx把现有的请求处理完成才关闭
			nginx -s reload #重新加载配置文件,当修改了配置文件时需要它进行重启
			nginx -s reopen #开始重新记录日志(用的不多)
		指定核心配置文件:nginx -c /opt/app/nginx/conf/nginx.conf  #这个也是命令启动nginx的方式
		测试nginx: nginx -t #一般在修改配置文件后都需要使用它来进行测试,看下配置文件有没有报错
		指定指令:nginx -g 指令 #我一般都是直接修改nginx配置文件,这参数用的不多	

3.常见命令及组合:

		查看编译选项:
			nginx -V
			
		修改nginx配置文件后重新加载nginx:
			nginx -t
			nginx -s reload

4.Nginx -s reload的真相

  • 1.首先向nginx master进程发送HUB信号(linux下支持72种信号)
  • 2.master会自动校验配置文件语法是否正确(如果nginx -t 这一步没有问题,在这里也就不会出现问题)
  • 3.master主动会打开新的监听端口响应用户请求
  • 4.master进程使用新的配置启动新的子进程
  • 5.master向老的worker子进程发送OUIT信号(OUIT指的是优雅的关闭)
  • 6.老的worker子进程主动关闭端口,不在接收请求,同时处理完当前连接后会自动结束进程
    在这里插入图片描述在这里插入图片描述

5.nginx优雅关闭old worker进程的真相

什么是优雅的关闭? 简单来说是当worker程序不在处理用户请求,处于空闲时间的时候,退出进程,释放空间。

优雅关闭流程:

  • 1.设置定时器,也就是worker_shutdown_timeout(设置优雅关闭进程的超时时间,如果进程在这个时间内没有被关闭,nginx就会主动关闭所有当前打开的连接)
  • 2.关闭监听句柄,也就是关闭端口,时当前进程不在接收用户新的请求
  • 3.关闭空闲连接,默认情况下,nginx都是fork几个空闲子进程等待用户请求,如果使用优雅的关闭,这类连接是优先被关闭的。
  • 4.在循环中逐渐关闭已处理完成的连接,如果还有部分连接在达到超时时间后还没有被关闭,则会被nginx强制关闭,在第4步中,只会出现2种情况,1)当前连接都会被优雅的关闭,2)当前连接只有一部分被优雅的关闭,还有一部分被强制关闭
  • 5.最后退出当前的worker子进程

哪些连接会被优雅的关闭?哪些连接又不能识别?

  • 可以被优雅关闭的连接?
  • 当前空闲连接,普通的http/https请求
  • 不能识别的请求?
  • Nginx代理web socket协议,在web socket协议后进行通讯的frame帧里,Nginx是不解析它的帧的,此时是没有办法的。
  • Nginx做TCP,UDP反向代理的时候,也无法识别需要经历多少报文才算结束
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值