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。
实际上,在没有显式指定nginx.conf配置文件路径时,将打开在configure命令执行时使用--conf-path=PATH指定的nginx.conf文件
(2)另行指定配置文件的启动方式
使用-c参数指定配置文件。例如:
/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 logs/nginx.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 > 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
上述两条命令的效果与执行/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>
(13)平滑升级Nginx
当Nginx服务升级到新的版本时,必须要将旧的二进制文件Nginx替换掉,通常情况下这是需要重启服务的,但Nginx支持不重启服务来完成新版本的平滑升级。
升级时包括以下步骤:
1)通知正在运行的旧版本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才有可能启动成功。
2)启动新版本的Nginx,可以使用以上介绍过的任意一种启动方法。这时通过ps命令可以发现新旧版本的Nginx在同时运行。
3)通过kill命令向旧版本的master进程发送SIGQUIT信号,以“优雅”的方式关闭旧版本的Nginx。随后将只有新版本的Nginx服务运行,此时平滑升级完毕。
(14)显示命令行帮助
使用-h或者-?参数会显示支持的所有命令行参数。
相关推荐
根据提供的信息来看,这段内容似乎并不直接关联到"Nginx配置命令"这一主题。但从题目需求出发,我们可以探讨一下Nginx的相关配置命令,并结合给定的部分内容进行一些假设性的扩展,来阐述如何利用Nginx进行项目部署...
安装完成后,Nginx的控制命令通常位于`sbin`目录下,例如: - `./nginx`:启动Nginx服务器。 - `./nginx -c /path/to/nginx.conf`:指定配置文件启动Nginx。 - `./nginx -p /path/to/nginx_prefix`:指定Nginx的...
3. **启动与管理**:使用 `nginx` 命令启动或停止服务,`systemd` 或其他服务管理工具可以用来控制 Nginx 的启动、停止和重启。 4. **配置**:编辑 `/etc/nginx/nginx.conf` 文件,根据需求设置服务器块、反向代理...
标题中的“一句简单命令重启nginx”指的是通过一个简洁的指令来重新启动Nginx服务,而不是采用复杂的启动脚本。在描述中提到了Apache服务器,它的重启命令相对简单,但在Nginx中,如果不了解特定的命令行选项,可能...
### Nginx对HTTP Method的控制与修改方法详解 #### 一、背景介绍 Nginx是一款广泛使用的高性能Web服务器和反向代理服务器,在实际应用中,有时我们需要自定义Nginx支持的HTTP请求方法。默认情况下,Nginx可能不支持...
可以通过运行`sudo service nginx restart`(对于大多数Linux发行版)或使用特定于系统的命令来实现。 ### 小结 通过以上步骤,你可以有效地为Nginx服务器添加权限控制,从而增强安全性,保护关键资源免受未授权...
你可以通过`service nginx start`、`service nginx stop`和`service nginx reload`来控制Nginx的状态。同时,别忘了检查Nginx的日志文件(通常位于`/usr/local/nginx/logs/`目录下)以获取有关其运行状况的信息。这...
7. **模块化设计**:Nginx拥有丰富的第三方模块,如模块化的日志记录、访问控制、限速等,可以根据需求灵活配置。 在Nginx 1.23.2版本中,可能包括以下更新: - **安全性更新**:可能修复了已知的安全漏洞,增强了...
计算机后端-PHP视频教程. Nginx-0103 控制命令_布尔教育.wmv
《Ingress-Nginx控制器与应用部署详解》 在 Kubernetes 集群中,Ingress 是一种用于对外提供服务的资源对象,它定义了外部网络如何访问内部的 Service。Nginx Ingress 控制器是广泛应用的一种解决方案,通过配置 ...
ingress-nginx-4.0.17是专为Helm部署在Kubernetes(k8s)集群中的ingress-nginx控制器设计的图表资源。这个版本提供了稳定性和性能优化,使得对Kubernetes服务的外部访问变得更为便捷和可靠。本文将深入探讨ingress...
最后,确保Nginx服务配置正确无误后,可以使用`nginx.exe -s reload`命令重新加载配置,或通过服务控制来启动或停止服务。 总结,通过以上步骤,我们可以成功地在Windows上安装Nginx,将其注册为服务,并设置自动...
在 Debian/Ubuntu 系统上,可以使用 `update-rc.d` 或 `systemd` 命令;在 CentOS/RHEL 系统上,可以使用 `chkconfig` 和 `systemctl`。 6. 配置 Nginx:编辑 `/usr/local/nginx/conf/nginx.conf` 文件,根据你的...
然后,你可以通过`./nginx_start.sh start|stop|restart`来控制Nginx服务。 7. **系统服务化** 为了方便管理,可以将Nginx设置为开机启动: ``` sudo systemctl enable nginx ``` 8. **安全注意事项** 在...
4. **系统集成**:服务可以通过`sc`命令或服务管理器进行控制,与其他系统组件集成良好。 ### 2. 使用winsw注册Nginx服务 Winsw是一个轻量级的开源工具,用于将任意可执行文件注册为Windows服务。在本例中,`winsw...
Nginx 的访问控制功能可以控制用户对资源的访问权限。 九. Nginx Location Nginx 的 Location 模块可以根据不同的条件来匹配 URL,并将其重定向到新的 URL。 十. Nginx 日志处理 Nginx 的日志处理功能可以记录...
**Nginx Upload Module 2.3.0 ...总之,Nginx Upload Module 2.3.0 提供了一种有效的方式来管理和处理大文件上传,为开发者提供了更多的灵活性和控制力。正确配置和使用这个模块,能够极大地提升 Web 应用的用户体验。
Nginx的URL重写规则、访问控制等功能都依赖于PCRE库,因此在编译Nginx时需要安装此库。 3. **zlib-1.2.13.tar.gz**:Zlib是一个开源的、跨平台的压缩库,主要用于数据压缩。Nginx在处理GZIP压缩、缓存等场景时会...
描述中提到解压后会得到"nginx-1.9.8.tar.gz",这是另一个压缩格式,通常用`tar -zxvf nginx-1.9.8.tar.gz`命令进一步解压。 3. **编译**:进入解压后的目录,运行`./configure`配置编译环境,然后执行`make`进行...