Nginx配置文件详解以及Nginx的启停控制,这里是精华

知识要点:

nginx的启停控制

nginx的配置文件解读

nginx启停控制

安装完成Nginx服务器之后我们需要来学习如何启动,停止,重启Nginx服务。在Linux平台下有着不止一种的控制Nginx启停的方法 下面我们来详细的学习一下。
Nginx的信号控制
在控制nginx中有一类是通过信号控制的,因此我们来先介绍一下Nginx服务器的信号控制.
在nginx服务运行时,会保持一个主进程和多个worker process 工作进程, 我们可以通过给主进程发送信号,就可以控制服务的启停了,那么我们如何去给服务发送信号?发送信号我们必须要知道服务的PID, 那么我们就来获取一下他的进程ID
第一种直接利用ps 查看详情 :

ps -ef | grep nginx
ps aux | grep nginx 
  二选一
#这些都是linux的基础知识,在这里和初学者分享一下

第二种 我们直接查看文件存储地址查看: 此操作需要先开启pid的存储才可以生效

# 进入logs文件下
cd logs

# 查看所有文件
ll

# Nginx.pid文件只有一串数字,那就是nginx的pid
vi nginx.pid 

找到我们的pid之后那么可以开始我们下一步的操作 再开始之前先了解一下可以接受的信号有哪些,各自有什么含义

信号 用法
TERM/INT 快速停止nginx服务
QUIT 平缓的停止nginx服务
HUP 平滑重启 即使用新的配置文件启动后平缓停止原有进程
USR1 重新打开日志常用于日志的切割·
USR2 使用新的nginx版本启动服务 之后平缓停止原有的进程,也就是所谓的“平滑升级”,
WINCH 平缓停止worker prcess ,用于nginx服务平滑升级

向Nginx服务进程发送信号也有两种方式:

  • 一种是使用Nginx二进制文件
  • 另外一种是使用Kill 命令发送信号
    用法如下
kill USR2  12808 #给进程12808发送USR2信号

同样我我们可以使用动态的PID
kill 信号 filepath (filepath指的是我们的Nginx.PID的路径)

kill USR  ‘nginx.pid路径’

nginx服务的启动
在linux平台下,启动Nginx服务器直接运行安装目录下的Sbin目录中的二进制文件即可.
具体命令在sbin目录下:

./nginx

这里主要讲下二进制文件的用法这是我们工作中常常用到的一些指令

#h或者?都可以使得我们获取到nginx的帮助文档
./nginx -h|?

nginx服务停止
停止我们的Nginx有两种方式

  • 快速的停止 指的是立马丢弃手上的工作停下来 停掉当前nginx正在处理的所有网络请求
  • 平缓的停止 指的是完成当前的工作之后再停止nginx
    停止nginx的命令比较多,可以发送信号来停止服务。比较常用的方式为:
# 习惯的使用方式为
# 停止nginx运行
./nginx -s stop  

# 其中INT | TERM用于快速停止 QUIT用于平滑停止
./nginx -g INT | TERM | QUIT

# 或者((PID未进程编号)
kill INT | TERM | QUIT PID

# 也可以直接使用
kill -9 信号  进程id
kill -9 pid 这种方式不推荐大家在工作中使用会导致部分用户连接的丢失

**Nginx服务的重启 **
当我们Nginx服务加入新的模块后,如果希望当前的Nginx服务应用新的配置或者使用新的模块生效,就需要重启Nginx服务。当然我们可以先关闭Nginx服务然后使用新的Nginx配置文件重启Nginx服务, 这里我们讲的 是平滑的重启Nginx服务
平滑是重启的一个过程,Nginx服务进程收到信号后先读取我们新的配置文件,如果我们新的配置文件正常,那么启动新的Nginx服务,然后平滑的关闭旧的进程服务,如果新的Nginx服务配置文件有问题那么将显示错误然后任然使用旧的Nginx
使用以下命令可以做到Nginx的平滑重启

./nginx -g HUB(信号)  [新的配置文件]
或者你使用了新的配置文件代替了旧的配置文件那么你可以使用、
kill HUB PID(或者是pid文件所在的文件)
都可以实现平滑的重启 
在工作中常用的重启方式为 
./nginx -s reload  平滑重启我们的nginx服务器 生产环境中经常使用 

Nginx服务的升级
如果我们需要对当前的Nginx服务进行升级 ,应用新的模块,最简单的方式是停下来,然后开启新的Nginx服务,那么给我们的用户体验是非常差的,会导致用户在一段时间内无法访问我们的服务器为了解决这个问题,Nginx提供了平滑升级的方案
过程如下:
注意:
为了实现nginx服务器的平滑升级,新安装的服务器路径应该和旧的一致。因此建议用新安装的服务器之前先备份一下我们的旧nginx服务器,如果由于种种原因不能保持新旧客户端路径一致则可以做一下操作,将旧的服务器路径更改为新的路径,新的服务器放入旧的路径中

#newinstallpath新文件的路径
./nginx -p newinstallpath

# 备份旧的服务器
# 安装新的服务器

#使新旧服务器实现平滑升级
./nginx -g USR2 

# 或者使用 
kill USR2 nginx.pid路径

# 查看新服务器的启动情况
ps -ef |grpe nginx 

# 发送平滑停止旧的服务器信号
./nginx -g WINCH

执行过程
Nginx服务接受到USR2的信号后,首先将旧的Nginx。pid文件后面添加一个.oldbin
变成了,nginx.pid.oldbin 然后执行新版本的Nginx服务器的二进制文件启动服务,如果启动成功那么我们将会有两个Nginx服务在提供服务
之后需要向旧的发送WINCH信号,使旧的nginx服务平缓的停止并删除
nginx.pid.oldbin文件 在发送WINCH信号前我们可以随时停止新的服务

基础配置文件解读

从目录中我们不难看出所有的配置文件都放在conf目录下主要的配置文件为 Nginx.conf
那么下面我们带领你来去详细的解读一下其中的配置详情

#全局属性模块   全局块 (不同的地方叫法不一样大概意思相同)

#user  nobody; #设定可以访问的用户或者组 如果不设置默认所有人可以访问 设置可以设置ip 等标识方式 
worker_processes  1;  #设定工作组数量 理论上越大越好,但是很多原因限制了性能 一般的跟我们
服务器核心数一样就可以了 

#error_log  logs/error.log;  
#日志文件存储的地方 默认是nginx下的logs 注释为释放的话没有日志生成


#error_log  logs/error.log  notice;
#error_log  logs/error.log  info;
#日志的级别设置 

#pid        logs/nginx.pid;
#进程的pid存放以及生成 如果你不释放开那么就不会在logs下生成nginx.pid文件
 

#events块
#这里设置的属性一般和网络连接有关的 所以没事别瞎折腾他 网络会出现很多莫名其妙的异常 
#常用到的有worker_processes的设置 比如是否序列化 是否允许 同时接受多个网络请求 
#选取什么样的时间模型等等 
events {
    worker_connections  1024; 
    #设置最大的连接数为  一般默认512 但是常用的时候 一般是 1024 -2048 
    #一般不要超过你的操作系统的最大文件句柄数
    
    accept_mutex off; 
    #是否开启网络连接的序列化 开启后可以防止多个进程对连接的争夺 防止惊群现象
    
    multi_accept on;
    #是否允许多个网络连接同事接入一个工作进程 默认一对一 开启后可以一对多 但是
    #你的程序很可能会出现异常

    use method;
    #事件模型的选择 有很多种模型可以给我们选择  select   poll  ...   使用默就可以了


#以上指令只能在events块配置 千万别串门了 
}
#http块
#这里是 nginx代理服务非常重要的一块我们将在下一节课中给大家详细的带来学习 

后续的配置文件解读在后面的课程中会一一带给大家

http {
    include       mime.types;
    default_type  application/octet-stream;

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

    #access_log  logs/access.log  main;

    sendfile        on;
    #tcp_nopush     on;

    #keepalive_timeout  0;
    keepalive_timeout  65;

    #gzip  on;

    server {
        listen       80;
        server_name  localhost;

        #charset koi8-r;

        #access_log  logs/host.access.log  main;

        location / {
            root   html;
            index  index.html index.htm;
        }

注:近期持续更新有关nginx的知识点,欢迎大家关注!

©著作权归作者所有,转载或内容合作请联系作者
  • 序言:七十年代末,一起剥皮案震惊了整个滨河市,随后出现的几起案子,更是在滨河造成了极大的恐慌,老刑警刘岩,带你破解...
    沈念sama阅读 204,530评论 6 478
  • 序言:滨河连续发生了三起死亡事件,死亡现场离奇诡异,居然都是意外死亡,警方通过查阅死者的电脑和手机,发现死者居然都...
    沈念sama阅读 86,403评论 2 381
  • 文/潘晓璐 我一进店门,熙熙楼的掌柜王于贵愁眉苦脸地迎上来,“玉大人,你说我怎么就摊上这事。” “怎么了?”我有些...
    开封第一讲书人阅读 151,120评论 0 337
  • 文/不坏的土叔 我叫张陵,是天一观的道长。 经常有香客问我,道长,这世上最难降的妖魔是什么? 我笑而不...
    开封第一讲书人阅读 54,770评论 1 277
  • 正文 为了忘掉前任,我火速办了婚礼,结果婚礼上,老公的妹妹穿的比我还像新娘。我一直安慰自己,他们只是感情好,可当我...
    茶点故事阅读 63,758评论 5 367
  • 文/花漫 我一把揭开白布。 她就那样静静地躺着,像睡着了一般。 火红的嫁衣衬着肌肤如雪。 梳的纹丝不乱的头发上,一...
    开封第一讲书人阅读 48,649评论 1 281
  • 那天,我揣着相机与录音,去河边找鬼。 笑死,一个胖子当着我的面吹牛,可吹牛的内容都是我干的。 我是一名探鬼主播,决...
    沈念sama阅读 38,021评论 3 398
  • 文/苍兰香墨 我猛地睁开眼,长吁一口气:“原来是场噩梦啊……” “哼!你这毒妇竟也来了?” 一声冷哼从身侧响起,我...
    开封第一讲书人阅读 36,675评论 0 258
  • 序言:老挝万荣一对情侣失踪,失踪者是张志新(化名)和其女友刘颖,没想到半个月后,有当地人在树林里发现了一具尸体,经...
    沈念sama阅读 40,931评论 1 299
  • 正文 独居荒郊野岭守林人离奇死亡,尸身上长有42处带血的脓包…… 初始之章·张勋 以下内容为张勋视角 年9月15日...
    茶点故事阅读 35,659评论 2 321
  • 正文 我和宋清朗相恋三年,在试婚纱的时候发现自己被绿了。 大学时的朋友给我发了我未婚夫和他白月光在一起吃饭的照片。...
    茶点故事阅读 37,751评论 1 330
  • 序言:一个原本活蹦乱跳的男人离奇死亡,死状恐怖,灵堂内的尸体忽然破棺而出,到底是诈尸还是另有隐情,我是刑警宁泽,带...
    沈念sama阅读 33,410评论 4 321
  • 正文 年R本政府宣布,位于F岛的核电站,受9级特大地震影响,放射性物质发生泄漏。R本人自食恶果不足惜,却给世界环境...
    茶点故事阅读 39,004评论 3 307
  • 文/蒙蒙 一、第九天 我趴在偏房一处隐蔽的房顶上张望。 院中可真热闹,春花似锦、人声如沸。这庄子的主人今日做“春日...
    开封第一讲书人阅读 29,969评论 0 19
  • 文/苍兰香墨 我抬头看了看天上的太阳。三九已至,却和暖如春,着一层夹袄步出监牢的瞬间,已是汗流浃背。 一阵脚步声响...
    开封第一讲书人阅读 31,203评论 1 260
  • 我被黑心中介骗来泰国打工, 没想到刚下飞机就差点儿被人妖公主榨干…… 1. 我叫王不留,地道东北人。 一个月前我还...
    沈念sama阅读 45,042评论 2 350
  • 正文 我出身青楼,却偏偏与公主长得像,于是被迫代替她去往敌国和亲。 传闻我的和亲对象是个残疾皇子,可洞房花烛夜当晚...
    茶点故事阅读 42,493评论 2 343

推荐阅读更多精彩内容