nginx常用操作命令

一、基础维护

1.启动

#1.直接启动
#进入nginx目录,执行启动命令
cd /usr/local/nginx/sbin
./nginx
# 或者直接
/usr/local/nginx/sbin/nginx
#2.指定配置文件方式启动
#进入nginx目录,执行启动命令
cd /usr/local/nginx/sbin
./nginx -c /usr/local/nginx/conf/nginx.conf
#或者
/usr/local/nginx/sbin/nginx -c /usr/local/nginx/conf/nginx.conf

2.检查nginx配置文件

#进入nginx目录
cd /usr/local/nginx/sbin
#检查配置文件是否有语法操作
./nginx -t
# 或者显示指定配置文件
./nginx -t -c /usr/local/nginx/conf/nginx.conf

如果配置文件存在语法错误,会有相应的提示信息,正常我们修改配置后,先进行检查,然后在进行重启

3.平滑的重启,修改配置后,重新加载配置

#进入nginx目录
cd /usr/local/nginx/sbin
#执行重载命令
./nginx -s reload

原理说明:
nginx工作中,包括一个master进程,多个worker进程。worker进程负责具体的http等相关工作,master进程主要是进行控制。
nginx -s reload 命令加载修改后的配置文件,命令下达后发生如下事件
Nginx的master进程检查配置文件的正确性,若是错误则返回错误信息,nginx继续采用原配置文件进行工作(因为worker未受到影响)
Nginx启动新的worker进程,采用新的配置文件
Nginx将新的请求分配新的worker进程
Nginx等待以前的worker进程的全部请求已经都返回后,关闭相关worker进程
重复上面过程,知道全部旧的worker进程都被关闭掉。
所以,重启之后,master的进程号不变,worker的进程号会改变。

4.关闭nginx

#进入nginx目录
cd /usr/local/nginx/sbin
# 快速停止nginx
./nginx -s stop
# 完整有序的停止nginx,这个命令会等待所有请求结束后再关闭nginx
./nginx -s quit

5.reopen重新打开日志文件

#进入nginx目录
cd /usr/local/nginx/sbin
# 重新打开日志文件
./nginx -s reopen

应用场景:

当需要切割 nginx 日志文件时,我们需要用到 nginx -s reopen 命令,用来完成新日志的生成。当日志文件太大时,一般我们是按天切割文件,也就是按天做个分类,每天的日志放在一个文件中,并用日期命令,方便日后查找。
但时我们简单的把文件移动并重新命令是无法及时生效的,因为在 linux 下的文件句柄,文件在被打开的情况下 mv 移走文件,操作这个文件的进程还是有这个文件的信息,原进程还是读写原来的文件,简单的 mv 无法生效也就无法完成我们想要的文件分隔。
一般我们需要两步:
1、移走文件并重命名
2、利用 nginx 的 reopen 功能,完成新日志文件的生成。

二、其他命令重启、关闭nginx

查看进程号,下图 master的为主进程号

ps -ef | grep nginx

输出信息
在这里插入图片描述
停止服务操作

#从容停止Nginx
kill -QUIT 主进程号
#快速停止Nginx
kill -TERM 主进程号
#强制停止Nginx
pkill -9 nginx
#平滑重启nginx:
kill -HUP 主进程号

二、高阶维护

2.1 配置日志

请求日志
http {

    log_format  main  '$remote_addr - $remote_user [$time_local] "$request" '
                      '$status $body_bytes_sent "$http_referer" '
                      '"$http_user_agent" "$http_x_forwarded_for"';

}
	$remote_addr  #记录访问网站的客户端地址
    $remote_user  #远程客户端用户名
    $time_local  #记录访问时间与时区
    $request  #用户的http请求起始行信息
    $status  #http状态码,记录请求返回的状态码,例如:200、301、404等
    $body_bytes_sent  #服务器发送给客户端的响应body字节数
    $request_length #请求的长度
    $request_time #请求处理时间,单位为秒,精度毫秒; 从读入客户端的第一个字节开始,直到把最后一个字符发送给客户端后进行日志写入为止。
    $http_referer  #记录此次请求是从哪个连接访问过来的,可以根据该参数进行防盗链设置。
    $http_user_agent  #记录客户端访问信息,例如:浏览器、手机客户端等
    $http_x_forwarded_for  #当前端有代理服务器时,设置web节点记录客户端地址的配置,此参数生效的前提是代理服务器也要进行相关的	x_forwarded_for设置

常见设置

日志级别

每个日志级别包括更高级别。例如,如果您将日志级别设置为warn,则Nginx还将记录error,crit,alert和emerg消息。未指定log_level参数时,默认为error。

debug-调试消息。
info -信息性消息。
notice -公告。
warn -警告。
error -处理请求时出错。
crit -关键问题。需要立即采取行动。
alert -警报。必须立即采取行动。
emerg - 紧急情况。系统处于无法使用的状态。

2.2 高级配置

grpc代理配置

参考文档
Nginx常用命令(启动、重启、关闭、检查)

你可能感兴趣的:(服务器,nginx,bash,运维)