当前位置 主页 > 服务器问题 > nginx问题汇总 >

    详解Nginx 反向代理、负载均衡、页面缓存、URL重写及读写分离详(10)

    栏目:nginx问题汇总 时间:2018-11-21 16:18

    14.关闭Web服务器并进行测试

    [root@web1 ~]# service httpd stop停止 httpd:                        [确定][root@web2 ~]# service httpd stop停止 httpd:                        [确定]

    t9

    注,大家可以看到,当所有服务器都不能工作时,就会启动备份服务器。好了,backup服务器就配置到这里,下面我们来配置ip_hash负载均衡。

    15.配置ip_hash负载均衡

    ip_hash,每个请求按访问IP的hash结果分配,这样来自同一个IP的访客固定访问一个后端服务器,有效解决了动态网页存在的session共享问题。(一般电子商务网站用的比较多)

    [root@nginx ~]# vim /etc/nginx/nginx.confupstream webservers {    ip_hash;    server 192.168.18.201 weight=1 max_fails=2 fail_timeout=2;    server 192.168.18.202 weight=1 max_fails=2 fail_timeout=2;    #server 127.0.0.1:8080 backup;  }

    注,当负载调度算法为ip_hash时,后端服务器在负载均衡调度中的状态不能有backup。(有人可能会问,为什么呢?大家想啊,如果负载均衡把你分配到backup服务器上,你能访问到页面吗?不能,所以了不能配置backup服务器)

    16.重新加载一下服务器

    [root@nginx ~]# service nginx reloadnginx: the configuration file /etc/nginx/nginx.conf syntax is oknginx: configuration file /etc/nginx/nginx.conf test is successful重新载入 nginx:                      [确定]

    17.测试一下

    t10

    注,大家可以看到,你不断的刷新页面一直会显示的民Web2,说明ip_hash负载均衡配置成功。下面我们来统计一下Web2的访问连接数。

    18.统计Web2的访问连接数

    [root@web2 ~]# netstat -an | grep :80 | wc -l304

    注,你不断的刷新,连接数会越来越多。好了,nginx的负载均衡就全部演示到这里下面我们来说一说,页面缓存。

    六、Nginx之页面缓存

    1.指令说明

    proxy_cache_path

    语法:proxy_cache_path path [levels=number] keys_zone=zone_name:zone_size [inactive=time] [max_size=size]; 

    默认值:None 

    使用字段:http 

    指令指定缓存的路径和一些其他参数,缓存的数据存储在文件中,并且使用代理url的哈希值作为关键字与文件名。levels参数指定缓存的子目录数,例如:

    proxy_cache_path /data/nginx/cache levels=1:2  keys_zone=one:10m;

    文件名类似于:

    /data/nginx/cache/c/29/b7f54b2df7773722d382f4809d65029c

    levels指定目录结构,可以使用任意的1位或2位数字作为目录结构,如 X, X:X,或X:X:X 例如: “2”, “2:2”, “1:1:2“,但是最多只能是三级目录。 

    所有活动的key和元数据存储在共享的内存池中,这个区域用keys_zone参数指定。one指的是共享池的名称,10m指的是共享池的大小。 

    注意每一个定义的内存池必须是不重复的路径,例如:

    proxy_cache_path /data/nginx/cache/one  levels=1   keys_zone=one:10m;proxy_cache_path /data/nginx/cache/two  levels=2:2  keys_zone=two:100m;proxy_cache_path /data/nginx/cache/three levels=1:1:2 keys_zone=three:1000m;