中间件:nginx应用篇

nginx是异步框架的web服务器,也可以用作反向代理,负载均衡以及作为缓存服务器

Nginx的主要特性

  1. 高并发,高性能
  2. 模块化设计
  3. 内存低消耗
  4. 热部署,热更新
  5. 内存低消耗

代理

正向代理在这里插入图片描述

反向代理

  • 为服务端做代理,代替服务端接收客户端的请求
    在这里插入图片描述
    作用:

    1. 保证内网的安全,公网作为访问地址,web服务器谁内网

    2. 负载均衡

负载均衡

 upstream myserver{
	server 127.0.0.1:8080;
	server 172.17.0.2:80;
 }
server {
 listen  9001;
 server_name  localhost;

 location / {
	proxy_pass  http://myserver;
	root html;
	index index.html index.htm;
 }
}
负载均衡的默认几种方式
  1. 轮询(默认) upstream
  2. 权重 weight
  3. ip_hash 每个请求按访问ip的hash结果分配
  4. fair 第三方 按后端服务器的相应时间分配请求
  5. url_hash

动静分离

server {
  listen  80;
  server_name  localhost;

  location /image/ {
    root  /data/; #这样会在nginx的 data目录下找 image目录 /data/image/
    autoindex  on; #值是on时,访问为文件夹时,会对里面的文件进行展示
  }
  lication /www/ {
    root  /data/; #这样会在nginx的 data目录下找 www目录 /data/www/
  }
   location / {
	proxy_pass  http://192.168.1.12:8080 #将动态(不匹配静态路径的)转发给服务器
	root html;
	index index.html index.htm;
 }
}

nginx 高可用

  • nginx高可用是防止nginx挂掉后,服务器便崩了。给nginx配置一个备用nginx。
  • 需要至少俩台nginx
  • 需要keepalived
  • 需要虚拟ip
keepalived主配置
global_defs {
   notification_email {  #指定keepalived在发生切换时需要发送email到的对象,一行一个
     XXX@XXX.com
   }
   notification_email_from miaoruntu@itcast.cn  #指定发件人
   #smtp_server XXX.smtp.com                             #指定smtp服务器地址
   #smtp_connect_timeout 30                              #指定smtp连接超时时间
   router_id LVS_DEVEL                                   #运行keepalived机器的一个标识(需要在hosts文件中添加 127.0.0.1的域名)
}

vrrp_script check_nginx {
    script "/etc/keepalived/check_nginx.sh"         ##监控脚本
    interval 2                                      ##时间间隔,2秒
    weight 2                                        ##权重
}

vrrp_instance VI_1 {
    state MASTER           #标示状态为MASTER 备份机为BACKUP
    interface eth0         #设置实例绑定的网卡
    virtual_router_id 51   #同一实例下virtual_router_id必须相同
    priority 100           #MASTER权重要高于BACKUP 比如BACKUP为99
    advert_int 1           #MASTER与BACKUP负载均衡器之间同步检查的时间间隔,单位是秒
    authentication {       #设置认证
        auth_type PASS     #主从服务器验证方式
        auth_pass 8888	   
    }

   track_script {
        check_nginx        #监控脚本
   }

    virtual_ipaddress {    #设置vip
        192.168.101.100       #可以多个虚拟IP,换行即可
    }
}
检查nginx脚本文件
  • 如果nginx停止,则杀死本机的keepalived进程
#!/bin/bash
# 如果进程中没有nginx则将keepalived进程kill掉
A=`ps -C nginx --no-header |wc -l`      ## 查看是否有 nginx进程 把值赋给变量A
if [ $A -eq 0 ];then                    ## 如果没有进程值得为 零
       service keepalived stop          ## 则结束 keepalived 进程
fi
keepalived备份配置
global_defs {
   notification_email {  #指定keepalived在发生切换时需要发送email到的对象,一行一个
    XXX@XXX.com
   }
   notification_email_from XXX@XXX.com   #指定发件人
   #smtp_server XXX.smtp.com                              #指定smtp服务器地址
   #smtp_connect_timeout 30                               #指定smtp连接超时时间
   router_id LVS_DEVEL                                    #运行keepalived机器的一个标识
}

vrrp_instance VI_1 {
    state BACKUP           #标示状态为MASTER 备份机为BACKUP
    interface eth0         #设置实例绑定的网卡
    virtual_router_id 51   #同一实例下virtual_router_id必须相同
    priority 99            #MASTER权重要高于BACKUP 比如BACKUP为99  
    advert_int 1           #MASTER与BACKUP负载均衡器之间同步检查的时间间隔,单位是秒
    authentication {       #设置认证
        auth_type PASS     #主从服务器验证方式
        auth_pass 8888
    }

    virtual_ipaddress {    #设置vip
        192.168.101.100       #可以多个虚拟IP,换行即可
    }
}

nginx原理

master和worker

在这里插入图片描述
master进程主要用来管理worker进程,具体包括如下4个主要功能:

  1. 接收来自外界的信号。
  2. 向各worker进程发送信号。
  3. 监控woker进程的运行状态。
  4. 当woker进程退出后(异常情况下),会自动重新启动新的woker进程。

worker是如何进行工作的

  1. 多个worker进程之间是对等且相互独立的(所以不需要加锁),他们同等竞争来自客户端的请求。
  2. 一个请求,只可能在一个worker进程中处理,一个worker进程,不可能处理其它进程的请求。
  3. worker进程的个数是可以设置的,一般我们会设置与机器cpu核数一致。同时,nginx为了更好的利用多核特性,具有cpu绑定选项,我们可以将某一个进程绑定在某一个核上,这样就不会因为进程的切换带来cache的失效。
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值