Ⅱ.nginx

作者: 唐騦忆 | 来源:发表于2019-10-31 21:51 被阅读0次

    1. 概念

    nginx是一个高性能的HTTP与反向代理服务器。它占用内存小,并发能力强,支持5w个并发连接。

    2. 反向代理

    正向代理:代理客户端,相当于桥梁,客户端通过代理服务器访问服务端,需要对客户端进行配置访问代理服务器。
    反向代理:代理服务器,相当于选择开关,反向代理服务器选择服务器拿到数据再返回给客户端,客户端不需要做任何配置

    3. 负载均衡

    将原本发送到单一服务器的请求发送给nginx,并在多个服务器之间做选择,实现服务器集群的并发。
    将请求在服务器之间作平均分配,降低单个服务器的负载。


    负载均衡

    4.动静分离

    tomcat中静态资源:html,css,js
    tomcat中动态资源:jsp,servlet
    在两台tomcat服务器中分别部署静态与动态资源,通过nginx反向代理做选择。


    动静分离

    5. nginx配置

    cd /usr/local/nginx/sbin/
    #开始运行,访问时记得开放防火墙端口
    ./nginx
    #nginx配置
    cd /usr/local/nginx/conf/
    vim nginx.conf
    

    5.1 全局块

    #表示nginx处理的并发数量
    worker_process 1;
    
    

    5.2 events块

    #影响nginx服务器与用户的网络连接
    #最大连接数
    work connection 1024;
    

    5.3 http块

    5.3.1http全局块
    5.3.2server块
    server {
      #nginx暴露给客户端的端口
      listen 80;
      #主机名称
      server_name;
    
    }
    

    6.nginx常用命令

    #先进去nginx目录
    cd /usr/local/nginx/sbin/
    
    #查看nginx版本号
    ./nginx -v
    
    #启动nginx
    ./nginx
    
    #关闭nginx
    ./nginx -s stop
    
    #重加载nginx
    ./nginx -s reload
    
    

    7. 实现反向代理

    7.1 安装tomcat(8080)

    cd /tomcat/bin/
    ./startup.sh
    #开放端口
    firewall-cmd --add-port=8080/tcp --permanent
    firewall-cmd --add-port=80/tcp --permanent
    firewall-cmd -reload
    firewall-cmd --list-all
    
    反向代理

    7.2 修改nginx.conf

    server {
      #nginx暴露端口
      listen 80;
      #暴露ip
      server_name 192.168.17.129;
    
      location / {
        root html;
        #被代理ip:port
        proxy_pass http://127.0.0.1:8080;
      }
    }
    
    server {
      #nginx暴露端口
      listen 80;
      #暴露ip
      server_name 192.168.17.129;
    
      检测到edu做如下跳转
      location ~ /edu/ {
      proxy_pass http://127.0.0.1:8080;
       }
      检测到vod做如下跳转
      loaction ~ /vod/ {
      proxy_pass http://127.0.0.1:8081;
      }
    }
    
    正则表达式
    = 相等
    ~包含
    ~*包含且不区分大小写
    
    

    8. 负载均衡

    分配策略

    1. 轮询(默认)
      每个请求按时间顺序自动分配,服务器宕机自动剔除。
    2. 权重
      根据权重进行分配
      server 192.168.17.129:8080 weight=5;
      server 192.168.17.129:8081 weight=10;
    
    1. ip_hash
      让用户指定访问一台服务器
    upstream myserver {
      ip_hash;
      server 192.168.17.129:8080;
      server 192.168.17.129:8081;
    }
    

    4.fair
    根据请求的响应时间进行分配

    upstream myserver {
      server 192.168.17.129:8080;
      server 192.168.17.129:8081;
    }
    

    简单实现

    upstream myserver {
      server 192.168.17.129:8080;
      server 192.168.17.129:8081;
    }
    server {
      listen 80;
      server_name 192.168.17.129;
    
      location / {
        root html;
        proxy_pass http://mysrver;
      }
    }
    

    9. 动静分离

    server {
      #nginx暴露端口
      listen 80;
      #暴露ip
      server_name 192.168.17.129;
    
      location /image/ {
        #静态文件路径
        root  /data/;
        #列出文件目录
        autoindex on;
      }
    
     location /www/ {
        #静态文件路径
        root  /data/;
        #列出文件目录
        index.html;
      }
    }
    

    10. 高可用

    定义:利用主nginx服务器与备份nginx服务器保证后台的高可用性。主服务器宕机会自动切换到备份服务器。


    高可用
    1. 在两台服务器上安装nginx
    2. 在两台服务器上安装keepalived
    yum install keepalived -y
    
    1. 修改配置
    vi /etc/keepalived/keepalived.conf
    
    #全局配置
    smtp_sever 192.168.17.129  #nginx地址
    smtp_connect_timeout 30 #nginx超时时间
    router_id LVS_DEVELBACK  #是主机hosts配置的地址
    
    #脚本配置
    interval 2  #脚本检测时间间隔
    weight -20  #脚本条件成立时降低权重
    
    #虚拟ip配置
    state MASTER/BACKUP  #主/从
    interface ens33  #网卡名
    priority 100/90  #主从优先级
    virtual_ipaddress {
        192.168.17.50 虚拟ip地址
    }
    

    4.启动主从nginx,启动主从keepalived

    ./nginx
    systemctl start keepalived.service
    

    11. nginx 原理

    1. 工作模式


      master-worker
    2. worker


      worker
    3. master-worker好处
      (1)可以进行热部署:nginx -s reload
      (2)每一个worker是一个独立的进程,不用加锁,可以保证服务不会中断。
    4. worker数量设置
      io多路复用(linux中),每个worker进程可以把cpu发挥到极致,worker数量与cpu数量相等时最理想的状态。
    5. worker连接数
      一个请求占用worker的2个连接数(静态资源)或四个连接数(动态资源访问tomcat)。

    相关文章

      网友评论

          本文标题:Ⅱ.nginx

          本文链接:https://www.haomeiwen.com/subject/opxxbctx.html