扩展功能

扩展功能,第1张

nginx扩展功能

系统:Centos6.5_x64

三台主机:nginx主机,主机名:master.lansgg.comIP:192.168.10.128

Apache主机,主机名:client1.lansgg.comIP:192.168.10.129

Apache主机,主机名:client2.lansgg.comIP:192.168.10.130

-缓存页面信息-读写分离-健康检查

I.nginx负载

第二,nginx缓存页面信息

1.nginx负载

1.1,nginx麻雀虽小五脏俱全。..

Nginx不仅可以用作强大的web服务器,还可以用作反向代理服务器。除此之外,nginx还可以根据调度规则分离动态和静态页面,并可以通过轮询、ip哈希、URL哈希、加权等方式平衡后端服务器的负载。同时,它还支持后端服务器的健康检查。

如果只有一台服务器,对网站来说就是灾难。因此,在这个时候,负载均衡将发挥其作用,它会自动消除挂起的服务器。

nginx的上游目前支持四种分配
1)和轮询(默认)
。每个请求都按时间顺序一个接一个地分配给不同的后端服务器。如果后端服务器宕机,可以自动拒绝。权重与访问比例成正比,用于后端服务器性能不均衡的情况。
2)、ip_hash
根据ip访问的哈希结果分配每个请求,使每个来宾固定访问一个后端服务器,可以解决会话的问题。
3)、公平(第三方)
根据后端服务器的响应时间分配请求,响应时间短的优先。NGX本身不支持fair。如果需要使用这种调度算法,必须下载Nginx的upstream_fair模块。

4)、url_hash(第三方)这种方法根据被访问url的哈希结果来分发请求,使得每个url都被定向到同一个后端服务器,可以进一步提高后端缓存服务器的效率。Nginx本身不支持url_hash。如果需要使用这种调度算法,必须安装Nginx的hash软件包。


每个上游设备的状态:

表明服务器在down命令之前暂时不参与加载;默认权重为1。重量越大,负载的重量越大。
max_failures:默认情况下,允许的请求失败次数为1。超过最大数量时,proxy_next_upstream模块
fail_timeout定义的错误:max_failures之后的暂停时间。
备份:当所有其他非备份机器停机或繁忙时,请求备份机器。所以这台机器的压力会最轻。

温馨提示:当负载调度算法为ip_hash时,负载均衡调度中后端服务器的状态不能为weight和backup。

1.2、配置nginx示例图:


1.2.1、配置nginx代理主机;Nginx配置文件

    upstream webGroup {     #默认轮询         server 192.168.10.129:80   weight=1;  #权重         server 192.168.10.202:80   weight=1;         }     server {         listen  1080 default_server;            #1080端口进行转发         server_name     www.lansgg.com lansgg.com;         access_log      logs/lansgg.access.log main;         error_log       logs/lansgg.error.log;         root            /opt/nginx/nginx/html;         index           index.html;         location / {         proxy_pass                   #前面的upstream名字          proxy_set_header    X-Real-IP $remote_addr;         }         }

测试:

1.2.2,配置nginx对后台服务器进行健康检查;后端服务器宕机,会自动踢出;

    upstream webGroup {         server 192.168.10.129:80        weight=1        max_fails=2     fail_timeout=2;         server 192.168.10.202:80        weight=1        max_fails=2     fail_timeout=2;         }

可以测试关闭后端服务器服务的方法;

1.2.3.不幸的是,所有的服务器都无法提供服务,怎么办?当用户打开页面时,会出现错误页面,降低用户体验。那么,我们能像LVS那样配置sorry_server吗?答案是肯定的,但是这里配置的不是sorry_server,而是backup。

配置nginx.conf

    upstream webGroup {         server 192.168.10.129:80        weight=1        max_fails=2     fail_timeout=2;         server 192.168.10.202:80        weight=1        max_fails=2     fail_timeout=2;         server 192.168.10.128:1020      backup;         }     server {         listen  1080 default_server;         server_name     www.lansgg.com lansgg.com;         access_log      logs/lansgg.access.log main;         error_log       logs/lansgg.error.log;         root            /opt/nginx/nginx/html;         index           index.html;         location / {         proxy_pass      http://webGroup;         proxy_set_header    X-Real-IP $remote_addr;         }         }     server {         listen       1020;         server_name  wwww.lansgg.com lansgg.com;         access_log      logs/localhost.access.log main;         error_log       logs/localhost.error.log;         root            /opt/nginx/nginx/html/error;         index           index.html;         } mkdir /opt/nginx/nginx/html/error echo "Test error index" > /opt/nginx/nginx/html/error/index.html

关闭后端两台服务器的httpd服务进行测试;他将自动切换到本地端口1020;


1.3、配置ip_hash负载均衡

Ip_hash,根据被访问Ip的哈希结果分配每个请求,让来自同一个IP的访问者以固定的方式访问一个后端服务器,可以解决网页的会话共享问题。

    upstream webGroup {         ip_hash;         server 192.168.10.129:80        weight=1        max_fails=2     fail_timeout=2;         server 192.168.10.202:80        weight=1        max_fails=2     fail_timeout=2;         }

重启测试,你会发现页面一直显示一个主机,我这边是web02


2.nginx缓存页面信息

proxy_cache_path指令 可以使用http区域

语法:proxy_cache_pathpath[levels=number]keys_zone=zone_name:zone_size[inactive=time][max_size=size];
该指令指定缓存路径和一些其他参数。缓存的数据存储在文件中,代理url的哈希值用作关键字和文件名。levels参数指定缓存的子目录数量,例如:

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

文件名类似于:

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

级别指定目录结构。可以使用任意1位或2位数字作为目录结构,如X、X:X或X:X:X例如:“2”、“2:2”、“1:1:2”,但最多只能是三级目录。
所有活动键和元数据都存储在共享内存池中。该区域由keys_zone参数指定。一个是指共享池的名称,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;

如果 缓存的数据在inactive参数指定的时间内没有被请求就被删除,则默认的非活动时间是10分钟。名为cache manager的进程控制磁盘的缓存大小。它用于删除非活动缓存并控制缓存大小。这些在max_size参数中定义。当当前缓存值超过 max_size指定的值时,最少使用的数据(LRU替换算法)将被删除。内存池的大小是根据缓存页面数量的比例来设置的,一个页面(文件)的meta 数据的大小取决于 *** 作系统,比如FreeBSD/i386下64字节,FreeBSD/amd64下128字节。

proxy_cache指令可以使用 http,server,location区域

语法:proxy_cachezone_name;
设置缓存区域的名称。同一个区域可以用在不同的地方。
在 0.7.48以后,缓存在后端遵循“expires”、“cache-control:no-cache”和“cache-control: max-age=XXX”的头字段,在0.7.66以后,“cache nginx在缓存过程中不会处理“Vary”头。为了保证某些私有数据不能被所有用户看到,后端必须设置 “no-cache”或“max-age=0”头,或者proxy_cache_key包含$cookie_xxx等用户指定的数据,使用cookie 的值作为proxy_cache_key的一部分可以防止私有数据被缓存,所以可以在不同的位置指定proxy_cache_key 的值,将私有数据与公共数据分开。
缓存指令依赖于代理缓冲区。如果proxy_buffers设置为off,缓存将不会生效。

proxy_cache_valid指令可以使用 http,server,location 区域

语法:proxy_cache_validreply_code[reply_code…]time;
为不同的响应设置不同的缓存时间,例如:

proxy_cache_valid  200 302  10m; proxy_cache_valid  404      1m;

将响应代码200和302的缓存时间设置为10分钟,404代码缓存1分钟。
如果只定义了时间:

proxy_cache_valid 5m;

则只缓存代码为200、301和302的响应。
您还可以在任何回复中使用any参数。

proxy_cache_valid  200 302 10m; proxy_cache_valid  301 1h; proxy_cache_valid  any 1m;

配置nginx缓存;


   [root@master conf]# mkdir -p /opt/nginx/nginx/proxy_cache/webGroup    [root@master conf]# vim nginx.conf    proxy_cache_path /opt/nginx/nginx/proxy_cache/webGroup levels=1:2 keys_zone=webGroup:20m max_size=128m;     upstream webGroup {         ip_hash;         server 192.168.10.129:80        weight=1        max_fails=2     fail_timeout=2;         server 192.168.10.202:80        weight=1        max_fails=2     fail_timeout=2;         }     server {         listen  1080 default_server;         server_name     www.lansgg.com lansgg.com;         access_log      logs/lansgg.access.log main;         error_log       logs/lansgg.error.log;         root            /opt/nginx/nginx/html;         index           index.html;         location / {         proxy_pass      http://webGroup;         proxy_set_header    X-Real-IP $remote_addr;         proxy_cache     webGroup;         proxy_cache_valid       200     10m;         }


测试:http://www.LANsgg.com:1080


缓存变量描述

$server_addr

服务器地址,可以在完成系统调用后确定。如果要绕过系统调用,必须在listen中指定地址并使用bind参数。

$upstream_cache_status

在版本0.8.3中,其值可能是:

  • 错过错过

  • EXPIRED-expired.请求被传输到后端。

    正在更新-已过期.由于代理/fastcgi_cache_use_stall正在更新,将使用旧的回复。

    STALE-已过期.由于proxy/fastcgi_cache_use_stall,后端会得到一个过期的回复。

    点击点击


    访问:http://www.LANsgg.com:1080


    欢迎分享,转载请注明来源:内存溢出

    原文地址: http://outofmemory.cn/zz/784284.html

    (0)
    打赏 微信扫一扫 微信扫一扫 支付宝扫一扫 支付宝扫一扫
    上一篇 2022-05-04
    下一篇 2022-05-04

    发表评论

    登录后才能评论

    评论列表(0条)

    保存