关于Nginx 命令行控制的问题
发布时间:2023-02-17 12:47:07 所属栏目:Nginx 来源:互联网
导读:Nginx 是一个高性能的 Web 服务器,从 2001 年发展至今,由于 Nginx 对硬件和操作系统内核特性的深度挖掘,使得在保持高并发的同时还能够保持高吞吐量,这篇文章主要介绍了Nginx 命令行控制,需要的朋友可以参考下 Nginx 介绍 Nginx 是一个高性能的 Web 服务
Nginx 是一个高性能的 Web 服务器,从 2001 年发展至今,由于 Nginx 对硬件和操作系统内核特性的深度挖掘,使得在保持高并发的同时还能够保持高吞吐量,这篇文章主要介绍了Nginx 命令行控制,需要的朋友可以参考下 Nginx 介绍 Nginx 是一个高性能的 Web 服务器,从 2001 年发展至今,由于 Nginx 对硬件和操作系统内核特性的深度挖掘,使得在保持高并发的同时还能够保持高吞吐量。Nginx 还采用了模块设计,有大量的第三方模块可以扩展 Nginx 的功能,因此 Nginx 的场景非常丰富,同时 Nginx 采用的是 BSD 许可证,赋予了 Nginx 最大的灵活性。简单来说,Nginx 具有以下几个优点: 高并发,高性能 可扩展性好 高可靠,一年之中停机时间可能只有几秒 热部署,可以不重启升级 灵活性高,采用BSD 许可证 BSD开源协议是一个给予使用者者很大自由的协议。基本上使用者可以“为所欲为”,可以自由的使用,修改源代码,也可以将修改后的代码作为开源或者专有软件再发布。 在Linux中,Nginx默认被安装在目录 /usr/local/nginx 中,其中二进制文件路径为 /usr/local/nginx/sbin/nignx ,配置文件路径为 /usr/local/nginx/conf/nginx.conf 。注:在 configure 执行时是可以指定把它们安装在不同的目录的。 在Linux中,Nginx默认被安装在目录 /usr/local/nginx 中,其中二进制文件路径为 /usr/local/nginx/sbin/nignx ,配置文件路径为 /usr/local/nginx/conf/nginx.conf 。 注:在 configure 执行时是可以指定把它们安装在不同的目录的。 1、默认方式启动 直接执行Nginx二进制程序: /usr/local/nginx/sbin/nginx/sbin/nginx 这时,会读取默认路径下的配置文件: /usr/local/nginx/conf/nginx.conf 实际上,在没有显式指定 nginx.conf 配置文件路径时,将打开 configure 命令执行时使用 --conf-path=PATH 指定nginx.conf文件 2、另行指定配置文件的启动方式 /usr/local/nginx/sbin/nginx -c /tmp/nginx.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 /var/nginx/test.pid" 上面这行命令意味着会把pid文件写到 /var/nginx/test.pid 中 -g 参数的约束条件是指定的配置项不能与默认路径下的nginx.conf中的配置项相冲突,否则无法启动。就像上例那样,类似这样的配置项: pid /var/nginx/test.pid ,是不能存在于默认的nginx.conf中的。 另一个约束条件是以 -g 方式启动的Nginx服务执行其他命令时,需要把 -g 参数也带上,否则可能出现配置项不匹配的情形。例如,如果要停止Nginx服务,那么需要执行下面代码: /usr/local/nginx/sbin/nginx -g "pid /var/nginx/test.pid" -s stop 如果不带上 -g "pid /var/nginx/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 9、快速的停止服务 使用 -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 [root@VM_0_16_centos ~]# ps -ef | grep nginx root 1413 1 0 2021 ? 00:00:00 nginx: master process ./sbin/nginx nobody 1414 1413 0 2021 ? 00:18:51 nginx: worker process root 26388 26323 0 13:52 pts/0 00:00:00 grep --color=auto nginx 接下来直接通过 kill 命令来发送信号: kill -s SIGTERM 1413 或者 kill -s SIGINT 1413 上面两条命令的效果与执行 /usr/local/nginx/sbin/nginx -s stop 是完全一致的 10、优雅的停止服务 如果系统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> 11、使运行中的Nginx重读配置项并生效 使用 -s reload 参数可以使运行中的Nginx服务重新加载nginx.conf文件 /usr/local/nginx/sbin/nginx -s reload 事实上Nginx会先检查新的配置项是否有误,如果全部正确就可以采取优雅的方式关闭,再重新启动Nginx来实现这个目的。类似的, -s 是发送信号,仍然可以使用 kill 命令发送HUP信号来达到相同的效果 kill -s SIGHUP <nginx master pid> 12、日志文件回滚 使用 -s reopen 参数可以重新打开日志文件,这样可以先把当前日志文件改名或者转移到其他目录中进行备份,再重新打开时就会生成新的日志文件。这个功能使得日志文件不至于过大 /usr/local/nginx/sbin/nginx -s reopen 当然这与使用 kill 命令发送USR1信号效果相同 kill -s SIGUSR1 <nginx master pid> (编辑:莱芜站长网) 【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容! |
相关内容
- ruby-on-rails – 升级Phusion Passenger而无需重新安装Ngi
- Nginx阻止/拒绝访问多个位置正则表达式
- 安装passenger和nginx时找不到C编译器gcc
- angularjs-$http.post请求标头字段Access-Control-Allow-He
- Nginx:何时使用proxy_set_header Host $host vs $proxy_ho
- 拦截后端301/302重定向(proxy_pass)并重写到另一个位置块有
- 配置 – 无法在nginx中找到位置块
- Python中的跟踪系统和实时统计分析
- django – 当我检查nginx access.log时,未知的HEAD请求会定
- nginx没有在端口81上响应
推荐文章
站长推荐
- Nginx:在特定路径组件的别名内路由到index.php
- php – 对于ansible来说,是一个优雅的重载幂等法
- nginx /index.html到/重写
- Gunicorn和Django与Upstart和Nginx
- nginx标头变量在标头名称中转义特殊字符
- ruby-on-rails – 使用SSL在Nginx后面的Rails 5中
- 在Digital ocean上部署Django,Gunicorn,Nginx,Vi
- nginx – WebSockets的应用层防火墙?
- http – Nginx proxy_cache_key $request_body被
- ruby-on-rails-与ws://example.com/cable的WebS
热点阅读