加入收藏 | 设为首页 | 会员中心 | 我要投稿 晋中站长网 (https://www.0354zz.com/)- 科技、建站、经验、云计算、5G、大数据,站长网!
当前位置: 首页 > 服务器 > 搭建环境 > Unix > 正文

Nginx的这些妙用,你肯定有不知道的!

发布时间:2019-12-26 15:47:08 所属栏目:Unix 来源:站长网
导读:副标题#e# Nginx 因为它的稳定性、丰富的模块库、灵活的配置和较低的资源消耗而闻名 。目前应该是几乎所有项目建设必备。今天通过这篇攻略让你快速通关 Nginx。 图片来自 Pexels Nginx 简介 Nginx 是一个免费、开源、高性能、轻量级的 HTTP 和反向代理服务

    advert_int 1                        # 检查间隔,默认为1s(vrrp组播周期秒数) 

    #授权访问 

    authentication { 

        auth_type PASS #设置验证类型和密码,MASTER和BACKUP必须使用相同的密码才能正常通信 

        auth_pass 1111 

    } 

    track_script { 

        chk_http_port                   #(调用检测脚本) 

    } 

    virtual_ipaddress { 

        192.168.16.150                   # 定义虚拟ip(VIP),可多设,每行一个 

    } 

③新建检测脚本(chmod 775 check_nginx.sh):

#!/bin/bash 

#检测nginx是否启动了 

A=`ps -C nginx --no-header |wc -l`         

if [ $A -eq 0 ];then    #如果nginx没有启动就启动nginx                         

      systemctl start nginx                #重启nginx 

      if [ `ps -C nginx --no-header |wc -l` -eq 0 ];then    #nginx重启失败,则停掉keepalived服务,进行VIP转移 

              killall keepalived                     

      fi 

fi 

④启动 Nginx 和 Keepalived(systemctl start keepalived.service)

⑤模拟 Nginx 故障(关闭主服务器 Nginx),验证,仍可以通过配置的虚拟 IP 访问,OK。

Nginx 原理与优化参数配置

Nginx 默认采用多进程工作方式,Nginx 启动后,会运行一个 Master 进程和多个 Worker 进程。

其中 Master 充当整个进程组与用户的交互接口,同时对进程进行监护,管理 Worker 进程来实现重启服务、平滑升级、更换日志文件、配置文件实时生效等功能。

Worker 用来处理基本的网络事件,Worker 之间是平等的,他们共同竞争来处理来自客户端的请求。

Nginx的这些妙用,你肯定有不知道的!

master-workers 的机制的好处:

可以使用 nginx-s reload 热部署。

每个 Worker 是独立的进程,不需要加锁,省掉了锁带来的开销。采用独立的进程,可以让互相之间不会影响,一个进程退出后,其他进程还在工作,服务不会中断,Master 进程则很快启动新的 Worker 进程。

需要设置多少个 Worker?Nginx 同 Redis 类似都采用了 IO 多路复用机制,每个 Worker 都是一个独立的进程,但每个进程里只有一个主线程,通过异步非阻塞的方式来处理请求,即使是成千上万个请求也不在话下。

每个 Worker 的线程可以把一个 CPU 的性能发挥到极致。所以 Worker 数和服务器的 CPU 数相等是最为适宜的。设少了会浪费 CPU,设多了会造成 CPU 频繁切换上下文带来的损耗。

#设置 worker 数量。 

 worker_processes 4  

#work 绑定 cpu(4 work 绑定 4cpu)。  

 worker_cpu_affinity 0001 0010 0100 1000  

#work 绑定 cpu (4 work 绑定 8cpu 中的 4 个) 。  

 worker_cpu_affinity 0000001 00000010 00000100 00001000 

连接数 worker_connection:这个值是表示每个 Worker 进程所能建立连接的最大值。

所以,一个 Nginx 能建立的最大连接数,应该是 worker_connections*worker_processes。

当然,这里说的是最大连接数,对于 HTTP 请 求 本 地 资 源 来 说 , 能 够 支 持 的 最 大 并 发 数 量 是 worker_connections*worker_processes,如果是支持 http1.1 的浏览器每次访问要占两个连接。

所以普通的静态访问最大并发数是:worker_connections*worker_processes /2。

而如果是 HTTP 作为反向代理来说,最大并发数量应该是 worker_connections*worker_processes/4。

因为作为反向代理服务器,每个并发会建立与客户端的连接和与后端服务的连接,会占用两个连接。

Nginx 请求处理流程如下图:

(编辑:晋中站长网)

【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容!

热点阅读