Nginx系列讲解

合集下载
  1. 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
  2. 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
  3. 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。

Nginx系列

一信号与配置

一、Nginx与信号

Nginx支持平滑重启,相比于Apache,修改了配置文件后可以不需要先停止程序,再重新启动。

1、启动

nginx –c nginx.conf

其中,-c nginx.conf可以省略不写。如果省略,则默认加载安装目录下的conf子目录中的nginx.conf。

2、停止

停止的方式有很多种,kill时传入不同的信号来结束或者平滑重启。Nginx的进程号记录在Pid文件中,Pid文件的位置可以在conf/nginx.conf中找到。如下图:

当然,也可以根据

ps –ef | grep nginx

来查找Nginx的进程号。我们可以通过kill命令来结束Nginx。

从容停止Nginx:

kill –QUIT Nginx进程ID

kill – QUIT /usr/local/nginx/logs/nginx.pid

快速停止Nginx:

kill –TERM Nginx进程ID

kill – TERM /usr/local/nginx/logs/nginx.pid

kill –INT Nginx进程ID

kill – INT /usr/local/nginx/logs/nginx.pid

强制停止Nginx:

kill –9 Nginx进程ID

kill -9 /usr/local/nginx/logs/nginx.pid

pkill -9 nginx

3、重启

如果修改了Nginx的配置文件,想要重启Nginx。同样可以使用kill命令来传递信号。不过,在此之前,我强烈建议先检查并测试配置文件是否正确。

测试配置文件:

nginx –t –c conf/nginx.conf

若提示unknow directive *** in conf/nginx.conf:55. Configuration file conf/nginx.conf test failed,则证明在第55行的***是非法的,需要修改。

若提示the configuration file conf/nginx.conf syntax is ok. Configuration file conf/nginx.conf test is successful,则证明配置文件测试通过,可以重启Nginx了。

平滑重启Nginx:

kill –HUP Nginx进程ID

kill – HUP /usr/local/nginx/logs/nginx.pid

当Nginx收到HUP信号的时候,首先会尝试解析配置文件,如果成功,则应用新的配置文件并完成重启。

4、Nginx升级

Nginx可以平滑升级,在我们重新便利Nginx、添加或删除服务器模块等操作后,通过kill命令并传递USR2信号进行升级。在此之前,请备份旧的可执行文件。

1)、新的版本仍旧会安装在旧目录当中。

2)、旧Pid文件被重命名为.oldbin

3)、执行新版本的Nginx,启动主进程和子进程。

4)、此时新旧版本同时在运行,需要使用kill命令并发送WINCH信号给旧的进程ID,是它从容关闭。

5、Nginx的信号

1)、TERM、INT 快速关闭

2)、QUIT从容关闭

3)、HUP平滑重启,重新加载配置文件

4)、USR1 重新打开日志文件

5)、USR2 平滑升级可执行程序

6)、WINCH 从容关闭工作进程

二、基本配置

1、主配置文件

主配置文件默认位于Nginx安装目录下的conf/nginx.conf。下面我们将逐行解读Nginx 的主配置文件。

#使用的用户和用户组

user www www;

#子进程个数,一般等于CPU的总核心数,如4核CPU则为4

worker_processes 4 ;

#一个nginx进程打开的最多文件描述符数目,理论值应该是最多打开文件数(ulimit -n)与nginx进程数相除,但是nginx分配请求并不是那么均匀,所以最好与ulimit -n 的值保持一致。现在在linux 2.6内核下开启文件打开数为65535,worker_rlimit_nofile就相应应该填写65535。

worker_rlimit_nofile 65535;

#错误日志的路径,可选级别为debug\info\notice\warn\error\crit

#error_log logs/error.log;

#error_log logs/error.log notice;

error_log logs/error.log crit;

#pid文件的路径,该文件中记录了当前正在运行的Nginx的主进程ID

pid logs/nginx.pid;

#事件相关

events {

#使用的网络IO模型,Linux推荐epoll, FreeBSD推荐kqueue. Apache的select是非常低

效的

use epoll;

#允许的连接数

worker_connections 10240;

}

#http相关

http {

#文件扩展名与文件类型映射表

include mime.types;

#默认文件类型

default_type application/octet-stream;

#日志格式ip - 用户[时间] 请求状态发送的字节

log_format main '$remote_addr - $remote_user [$time_iso8601] "$request" '

'$status $body_bytes_sent ';

#接受请求的日志路径

access_log logs/$server_name.log main;

相关文档
最新文档