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
原文地址:https://www.cnblogs.com/xiaoaiying/p/14270031.html