• nginx


    nginx命令

    查看版本:【./nginx -v】
    启动:【./nginx】
    关闭:【./nginx -s stop】
    重载配置文件: 【./nginx -s reload】

    配置文件

    修改nginx配置文件:【nginx.conf】
    配置文件内分块:

    全局块:设置一些影响nginx 服务器整体运行的配置指令
    events块:涉及的指令主要影响 Nginx 服务器与用户的网络连接
    http块:配置中最频繁的部分,代理、缓存和日志定义等绝大多数功能和第三方模块的配置都在这里。
        全局http块:
        server块:
            全局server块:
            location块:
    

    反向代理:

    通过路径分发请求

    ----示例配置:配置在http块内
    server{
        listen   	 9001;
        server_name  192.168.17.129;
        location ~ /fedu/
    		proxy_pass http://127.0.e.1:8080;
        }
        location ~ /fvod/{
            proxy_pass http://127.0.0.1:8081;
        }
    }
    

    1、= :用于不含正则表达式的uri前,要求请求字符串与uri严格匹配,如果匹配成功,就停止继续向下搜索并立即处理该请求。。
    2、~:用于表示uri包含正则表达式,并且区分大小写。
    3、~用于表示 uri包含正则表达式,并且不区分大小写。
    4、^~:用于不含正则表达式的uri前,要求Nginx服务器找到标识uri和请求字符串匹配度最高的 location后,立即使用此 location处理请求,而不再使用location块中的正则uri和请求字符串做匹配。
    注意:如果uri包含正则表达式,则必须要有或者
    标识。v

    负载均衡

    配置文件: 【upstream】
    分配策略:

    • 轮询:按顺序分配
    • weight权重:权重值越高分配机率越大
    • ip_hash:按iphash结果分配,每个访客固定访问某一台服务器
    • fair第三方:按后端服务器响应时间分配请求,响应时间短的优先分配

    动静分离

    动态和静态请求分开。

    ----配置在server块内
    
    location /www/{
        root    /data/;
        index index.html index.htm ;
    }
    location /image/{
        root    /data/;
        autoindex on;  # 能列出文件的目录
    }
    

    location后 配置的是【请求访问路径】
    root 后配置的是【文件根路径】
    文件存放在【根路径+访问路径】下

    高可用

    某nginx宕机后,请求还能正常访问。

    配置高可用:

    • 安装多nginx
    • 每个nginx服务器中安装keepalived 修改keepalived.conf配置文件配置
    ----keeplived.conf配置文件配置参考
    
    global_defs {
        notification_email {
            acassen@firewall.loc
            failover@firewall.loc
            sysadmin@firewall.loc
        }
        notification_email_from Alexandre.Cassen@firewall.loc
            smtp_server 192.168.17.129
            smtp_connect_timeout 30
            router_id LVS_DEVEL
        }
    vrrp_script chk_http_port {
            script "/usr/local/src/nginx_check.sh"
            interval 2      #(检测脚本执行的间隔)
            weight 2
        }
    
    }
    vrrp_instance VI_1 {
        state BACKUP   # 备份服务器上将 MASTER 改为 BACKUP
        interface ens33  //网卡
        virtual_router_id 51   # 主、备机的 virtual_router_id 必须相同
        priority 100     # 主、备机取不同的优先级,主机值较大,备份机值较小
        advert_int 1
        authentication {
            auth_type PASS
            auth_pass 1111
        }
        virtual_ipaddress {
            192.168.17.50 // VRRP H 虚拟地址
        }
    }
    
    ----nginx_check.sh脚本内容
    #!/bin/bash 
    A=`ps -C nginx –no-header |wc -l`
    if [ $A -eq 0 ];then     
        /usr/local/nginx/sbin/nginx     # 启动脚本的位置
        sleep 2
        if [ `ps -C nginx --no-header |wc -l` -eq 0 ];then        
            killall keepalived 
        fi 
    fi
    
    • 启动nginx
    • 启动keepalived

    测试高可用效果:

    • 分别启动两台nginx和keepalived,通过配置的虚拟ip进行访问,可以正常访问。
    • 把master类型的nginx和keepalived停掉,通过配置虚拟ip进行访问,还可以正常访问,即测试成功。

    keepalived配置文件:

    全局配置块:global_defs
        router_id 配置主机名称
    脚本配置块:vrrp_script
        weight -20 #服务挂掉后权重减少20
    虚拟ip配置块:vrrp_instance VI_1
    

    nginx原理

    master和worker

    请求->master->worker通过争抢机制得到任务调用tomcat完成

    多worker好处:

    • 可以使用nginx -s reload热部署
    • 每个worker是独立进程,其中一个worker出问题,其他继续争抢,不会造成服务中断。

    需设置多少个worker:

    • nginx同redis类似都采用了io多路复用机制,每个worker都是一个独立的进程,但每个进程里只有一个主线程。和cpu核数相等最为适宜。

    单个请求worker占用几个连接数:

    • 2或4 静态=2 动态需访问tomcat=4
    worker最大连接数=worker总数*每个worker最大连接数
    静态访问最大并发数=worker最大连接数/2
    反向代理最大并发数=worker最大连接数/4
    
  • 相关阅读:
    mysql对库,表,数据类型的操作以及完整性约束
    mysql数据库初步了解
    响应式及Bootstrap
    事件流丶事件对象
    JQuery初识(三 )
    JQuery初识(二)
    JQuery初识
    sencha touch tpl 实现按钮功能
    sencha touch 分享到微博扩展
    sencha touch 隐藏滚动条样式的几种方式
  • 原文地址:https://www.cnblogs.com/xiaoaiying/p/14270031.html
Copyright © 2020-2023  润新知