Nginx 之五: Nginx服务器的负载均衡、缓存与动静分离功能

一、负载均衡:

通过反向代理客户端的请求到一个服务器群组,通过某种算法,将客户端的请求按照自定义的有规律的一种调度调度给后端服务器。

Nginx的负载均衡使用upstream定义服务器组,后面跟着组名,组名后面是大括号包起来的服务器列表,每个服务器使用server开头,后面跟定义的服务器名字、服务器IP:Port、参数;

1:upstream要写在Server块的外面,可以有多个,名称不同即可,如下:

upstream webserver {
        server  192.168.0.201;
        server  192.168.0.202;
}

server {
        server_name  hfnginx.chinacloudapp.cn;
        #access_log  logs/host.access.log  main;
        location / {   #首页负载之后端服务器
            proxy_pass  http://webserver;  #通过upstrean定义的服务器组名调用后端服务器
            proxy_set_header X-Real-IP $remote_addr;  #传递客户端的ip地址
        }
        location ~* ^/form {   #后端Web服务器要有此目录
            proxy_pass  http://webserver;
            proxy_set_header X-Real-IP $remote_addr;
        }
}    

1.1:后端服务器要准备好首页和form目录

1.2:访问首页测试:

    

1.3:访问form目录测试:

  

1.4:nginx支持的三种负载方式:

round-robin:轮训调度,默认
ip_hash:会话绑定
least_conn:最少会话链接

1.5:backup服务器:

upstream webserver {
        server  192.168.0.201 weight=1 max_fails=2  fail_timeout=2;
        server  192.168.0.202 weight=1 max_fails=2  fail_timeout=2;
        server 127.0.0.1:9008 backup; #调用backup服务器,可以是本机或其他服务器。
}
server {
                listen 9008;
                server_name localhost;
                root html/error;
                index index.html;
}

[[email protected] nginx]# cat html/error/index.html  #backup服务器的内容
Error Page!

测试:将服务器组内的其他服务器关闭,访问如下:

1.6:实现动静分离:

upstream web {
    server  192.168.0.1 weight=1 max_fails=2  fail_timeout=2;
    server  192.168.0.2 weight=1 max_fails=2  fail_timeout=2;
} 

upstream image  {
    server  192.168.0.3 weight=1 max_fails=2  fail_timeout=2;
    server  192.168.0.4 weight=1 max_fails=2  fail_timeout=2;
} 

upstream php {
    server  192.168.0.5 weight=1 max_fails=2  fail_timeout=2;
    server  192.168.0.6 weight=1 max_fails=2  fail_timeout=2;
} 

location  /{
    root html/web;
    index  index.php index.html;
}

location ~* \.php$ {
    fastcgi_proxy  http://php;
}

location ~* "\.(.jpg|png|jpeg|gif)" {
    proxy_pass http://image;
}

1.7:实现数据缓存:

缓存是缓存nginx服务器接收请求过的数据,数据超时时间不能太长,因为数据可能会发生变化,但是nginx服务器内部的缓存的数据还没有更细,会导致客户端请求的数据不是最新数据的问题,数据缓存目录不能定义在server快内,要定义在http块中。

[[email protected] nginx]# grep -v "#" conf/conf.d/hfnginx.conf    | grep -v "^$"
upstream webserver {
        server  192.168.0.201 weight=1 max_fails=2  fail_timeout=2;
        server  192.168.0.202 weight=1 max_fails=2  fail_timeout=2;
}
server {
                listen 9008;
                server_name localhost;
                root html/error;
                index index.html;
}

proxy_cache_path  /nginx/cache/first levels=1:2  keys_zone=first:20m max_size=1g; #缓存目录不能定义在server块内,要定义在http块中
#/nginx/cache/first定义缓存目录参数
#evels=1:2  定义两层目录,第一层一个字符名称,第二个两个字符名称
#keys_zone=first:20m 每个缓存都是一个共享内存空间。这就是用户定义共享内存空间地址的名称
#max_size=1g 定义目录最大空间为1g,因为缓存空间越大搜索数据越慢,因此不宜太大。
server {
        server_name  hfnginx.chinacloudapp.cn;
        location / {
            add_header X_Via $server_addr;  #添加服务器地址到报文头部
            add_header X-Cache $upstream_cache_status;  #添加缓存状态到报文头部
            proxy_pass  http://webserver;
            proxy_cache  first; #调用缓存
            proxy_cache_valid 200 10m; #定义缓存失效时间,200是状态码,即缓存状态码是200请求成功的数据,10m是10分钟,即缓存的数据的超时时间10分钟,10分钟后即过期,不定义则缓存不生效
        }

        location ~* ^/form {
            proxy_cache  cache_one;
            proxy_pass  http://webserver;
            proxy_set_header X-Real-IP $remote_addr;
        }
}

测试缓存:

注:X_Via返回的响应客户端请求报文的服务器,将有Nginx构建报文响应客户端请求,所以显示的是Nginx服务器的IP地址,X-Cache标记是否缓存,HIT是缓存过的数据,MISS是没有缓存的数据。

把缓存删除,重新访问,将返回没有缓存的数据:

刷新后再次访问:

1.8:另外常用的三种缓存:

open_log_cache:日志缓存,降低磁盘IO
open_file_cache:打开文件句柄缓存,将文件缓存至 Nginx管理的内存当中加速响应
fastcgi_cache:缓存后端php服务器的内容,当时如果php内容发生更改则会导致客户端访问的页面不是最新的,因此要慎用。
另外Nginx的limit限制也是基于内存共享来实现的

原文地址:https://www.cnblogs.com/myblog1314/p/11162080.html

时间: 2024-10-28 22:43:42

Nginx 之五: Nginx服务器的负载均衡、缓存与动静分离功能的相关文章

HAproxy的负载均衡+日志独立+动静分离+读写分离的配置

主机环境   redhat6.5 64位 实验环境   服务端1 ip 172.25.29.2            服务端2 ip 172.25.29.3             管理端1 ip 172.25.29.1  防火墙状态:关闭 1.Haproxy的负载均衡及测试 A)负载均衡的配置 [[email protected] ~]# yum install haproxy -y            #安装haproxy [[email protected] ~]# vim /etc/h

编译安装nginx实现反向代理、负载均衡、缓存功能

一.编译安装nginx 1.下载 [[email protected] ~]# wget http://nginx.org/download/nginx-1.10.0.tar.gz 2.解压 [[email protected] ~]# tar xf nginx-1.10.0.tar.gz [[email protected] ~]# cd nginx-1.10.0 3.安装依赖组件 [[email protected] nginx-1.10.0]# yum install pcre-devel

编译安装nginx并实现反向代理负载均衡和缓存功能

一.编译安装nginx 1.下载 [[email protected] ~]# wget http://nginx.org/download/nginx-1.10.0.tar.gz 2.解压 [[email protected] ~]# tar xf nginx-1.10.0.tar.gz [[email protected] ~]# cd nginx-1.10.0 3.安装依赖组件 [[email protected] nginx-1.10.0]# yum install pcre-devel

双节点(nginx+keepalived)为两台apache服务器提供负载均衡

说明:本实验为双节点nginx为两台apache服务器提供负载均衡,本文不是做lvs,所以realserver不是配置在keepalived.conf而是在nginx的配置文件中upstream.此架构需考虑的问题:1)Master没挂,则Master占有vip且nginx运行在Master上2)Master挂了,则backup抢占vip且在backup上运行nginx服务3)如果master服务器上的nginx服务挂了,则vip资源转移到backup服务器上4)检测后端服务器的健康状态Mast

单节点nginx为两台apache服务器提供负载均衡

需求:本实验为单节点nginx为两台apache服务器提供负载均衡,所有配置为最简单 1.初始化3台测试server,该关的关了 [[email protected] ~]# vim /etc/hosts 192.168.1.101 ng-master 192.168.1.161 web1 192.168.1.162 web2 [[email protected] ~]# yum clean all [[email protected] ~]# systemctl stop firewalld.

单节点nginx为两台apache服务器提供负载均衡(转载)

单节点nginx为两台apache服务器提供负载均衡 需求:本实验为单节点nginx为两台apache服务器提供负载均衡,所有配置为最简单 1.初始化3台测试server,该关的关了 1 2 3 4 5 6 7 8 9 [[email protected] ~]# vim /etc/hosts 192.168.1.101   ng-master 192.168.1.161   web1 192.168.1.162   web2 [[email protected] ~]# yum clean a

nginx实现反向代理与负载均衡

nginx在LB Cluster集群中也可以扮演一定的角色,即反向代理与负载均衡.在一个Web服务中,来自客户端的请求可以经由nginx服务器转发至后端服务器,并且按照一定的算法实现负载均衡. 1.反向代理 1)在192.168.10.17/24与192.168.10.77/24主机上安装nginx,提供web服务. 编辑两台主机的主页文件内容分别为 inode17 page 和inode77 page 2)主机172.16.10.66提供nginx的反向代理服务 为了与后端主机进行通信,此主机

Nginx的反相代理, 负载均衡

转自 http://freeloda.blog.51cto.com/2033581/1288553 大纲 一.前言 二.环境准备 三.安装与配置Nginx 四.Nginx之反向代理 五.Nginx之负载均衡 六.Nginx之页面缓存 七.Nginx之URL重写 八.Nginx之读写分离 注,操作系统为 CentOS 6.4 x86_64 , Nginx 是版本是最新版的1.4.2,所以实验用到的软件请点击这里下载:http://yunpan.cn/QXIgqMmVmuZrm 一.前言 在前面的几

nginx 作为反向代理实现负载均衡的例子

nginx 这个轻量级.高性能的 web server 主要可以干两件事情: 〉直接作为http server(代替apache,对PHP需要FastCGI处理器支持): 〉另外一个功能就是作为反向代理服务器实现负载均衡 以下我们就来举例说明如何使用 nginx 实现负载均衡.因为nginx在处理并发方面的优势,现在这个应用非常常见.当然了Apache的 mod_proxy和mod_cache结合使用也可以实现对多台app server的反向代理和负载均衡,但是在并发处理方面apache还是没有