一、负载均衡:

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

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= max_fails= fail_timeout=;
server 192.168.0.202 weight= max_fails= fail_timeout=;
server 127.0.0.1: backup; #调用backup服务器,可以是本机或其他服务器。
}
server {
listen ;
server_name localhost;
root html/error;
index index.html;
} [root@hfnginx nginx]# cat html/error/index.html #backup服务器的内容
Error Page!

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

1.6:实现动静分离:

upstream web {
server 192.168.0.1 weight= max_fails= fail_timeout=;
server 192.168.0.2 weight= max_fails= fail_timeout=;
} upstream image {
server 192.168.0.3 weight= max_fails= fail_timeout=;
server 192.168.0.4 weight= max_fails= fail_timeout=;
} upstream php {
server 192.168.0.5 weight= max_fails= fail_timeout=;
server 192.168.0.6 weight= max_fails= fail_timeout=;
} 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块中。

[root@hfnginx nginx]# grep -v "#" conf/conf.d/hfnginx.conf    | grep -v "^$"
upstream webserver {
server 192.168.0.201 weight= max_fails= fail_timeout=;
server 192.168.0.202 weight= max_fails= fail_timeout=;
}
server {
listen ;
server_name localhost;
root html/error;
index index.html;
} proxy_cache_path /nginx/cache/first levels=: keys_zone=first:20m max_size=1g; #缓存目录不能定义在server块内,要定义在http块中

#/nginx/cache/first定义缓存目录参数
#evels=: 定义两层目录,第一层一个字符名称,第二个两个字符名称
#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 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限制也是基于内存共享来实现的

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

  1. Nginx实现静态服务器+https+负载均衡

    #user nobody; # 进程数=CPU总核数 worker_processes 2; #error_log logs/error.log; #error_log logs/error.log ...

  2. Nginx特性验证-反向代理/负载均衡/页面缓存/URL重定向

    原文发表于cu:2016-08-25 参考文档: Nginx 反向代理.负载均衡.页面缓存.URL重写等:http://freeloda.blog.51cto.com/2033581/1288553 ...

  3. Nginx服务器部署 负载均衡 反向代理

    Nginx服务器部署负载均衡反向代理 LVS Nginx HAProxy的优缺点 三种负载均衡器的优缺点说明如下: LVS的优点: 1.抗负载能力强.工作在第4层仅作分发之用,没有流量的产生,这个特点 ...

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

    说明:本实验为双节点nginx为两台apache服务器提供负载均衡,本文不是做lvs,所以realserver不是配置在keepalived.conf而是在nginx的配置文件中upstream.此架 ...

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

    需求:本实验为单节点nginx为两台apache服务器提供负载均衡,所有配置为最简单 1.初始化3台测试server,该关的关了 [root@host101 ~]# vim /etc/hosts 19 ...

  6. 在ubuntu上面配置nginx实现反向代理和负载均衡

    上一篇文章(http://www.cnblogs.com/chenxizhang/p/4684260.html),我做了一个实验,就是利用Visual Studio,基于Nancy框架,开发了一个自托 ...

  7. Nginx的反相代理, 负载均衡

    转自 http://freeloda.blog.51cto.com/2033581/1288553 大纲 一.前言 二.环境准备 三.安装与配置Nginx 四.Nginx之反向代理 五.Nginx之负 ...

  8. nginx 详解反向代理负载均衡

    什么是反向代理负载均衡 使用代理服务器可以将请求转发给内部的Web服务器,使用这种加速模式显然可以提升静态网页的访问速度.因此也可以考虑使用这种技术,让代理服务器将请求 均匀转发给多台内部Web服务器 ...

  9. Nginx正反向代理、负载均衡等功能实现配置

    版权声明:本文为博主原创文章,未经博主允许不得转载.   目录(?)[+]   系统环境: VirtualBox Manager Centos6.4 nginx1.10.0 IP对应的机器名: IP ...

随机推荐

  1. Dijkstra算法模拟讲解

    dijkstra算法,是一个求单源最短路径算法 其算法的特点为: 层层逼进,有点类似宽度搜索的感觉 其需要的数据结构为:                  int map[N][N] 所有点之间的权表 ...

  2. 最长回文子串 | 勇幸|Thinking

    最长回文子串 | 勇幸|Thinking 最长回文子串

  3. angularJS使用$watch监控数据模型的变化

    使用$watch监控数据模型的变化 在scope 内置的全部函数中,用得最多的可能就是$watch 函数了.当你的数据模型中某一部分发生变化时,$watch 函数能够向你发出通知.你能够监控单个对象的 ...

  4. BNUOJ29065鸣人的查克拉

    鸣人的查克拉 Time Limit: 1000ms Memory Limit: 65536KB 64-bit integer IO format: %lld      Java class name: ...

  5. sharepoint 自定义字段实现省市联动

    最后实现效果如下:设置栏如下:解决方案结构如下: fldtypes_RoyCustomField.xml 内容如下: <?xml version="1.0" encoding ...

  6. 几个linux 下C/C++集成开发环境推荐

    链接地址:http://www.lupaworld.com/article-210675-1.html 摘要: 一.AnjutaAnjuta是一个多语言的IDE,它最大的特色是灵活,同时打开多个文件, ...

  7. windows hook (转)

    http://blog.csdn.net/friendan/article/details/12226201 原文地址:http://blog.sina.com.cn/s/blog_628821950 ...

  8. mysql中随机取出几条数据

    SELECT t1.id,title,extName,cover,url FROM shop_articles AS t1 JOIN (SELECT ROUND(RAND() * ((SELECT M ...

  9. Maven Spring JUnit 在Maven Clean Install时报

    问题: Maven Clean Install时, 遇到报错package org.junit does not exist 明显, Unit Test在Compile阶段就被检查了. 而POM.xm ...

  10. css中z-index属性(标签层叠次序)

    定义和用法 z-index 属性设置元素的堆叠顺序.拥有更高堆叠顺序的元素总是会处于堆叠顺序较低的元素的前面. 注释:元素可拥有负的 z-index 属性值. 注释:Z-index 仅能在定位元素上奏 ...