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= 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服务器的负载均衡、缓存与动静分离功能的更多相关文章
- Nginx实现静态服务器+https+负载均衡
#user nobody; # 进程数=CPU总核数 worker_processes 2; #error_log logs/error.log; #error_log logs/error.log ...
- Nginx特性验证-反向代理/负载均衡/页面缓存/URL重定向
原文发表于cu:2016-08-25 参考文档: Nginx 反向代理.负载均衡.页面缓存.URL重写等:http://freeloda.blog.51cto.com/2033581/1288553 ...
- Nginx服务器部署 负载均衡 反向代理
Nginx服务器部署负载均衡反向代理 LVS Nginx HAProxy的优缺点 三种负载均衡器的优缺点说明如下: LVS的优点: 1.抗负载能力强.工作在第4层仅作分发之用,没有流量的产生,这个特点 ...
- 双节点(nginx+keepalived)为两台apache服务器提供负载均衡
说明:本实验为双节点nginx为两台apache服务器提供负载均衡,本文不是做lvs,所以realserver不是配置在keepalived.conf而是在nginx的配置文件中upstream.此架 ...
- 单节点nginx为两台apache服务器提供负载均衡
需求:本实验为单节点nginx为两台apache服务器提供负载均衡,所有配置为最简单 1.初始化3台测试server,该关的关了 [root@host101 ~]# vim /etc/hosts 19 ...
- 在ubuntu上面配置nginx实现反向代理和负载均衡
上一篇文章(http://www.cnblogs.com/chenxizhang/p/4684260.html),我做了一个实验,就是利用Visual Studio,基于Nancy框架,开发了一个自托 ...
- Nginx的反相代理, 负载均衡
转自 http://freeloda.blog.51cto.com/2033581/1288553 大纲 一.前言 二.环境准备 三.安装与配置Nginx 四.Nginx之反向代理 五.Nginx之负 ...
- nginx 详解反向代理负载均衡
什么是反向代理负载均衡 使用代理服务器可以将请求转发给内部的Web服务器,使用这种加速模式显然可以提升静态网页的访问速度.因此也可以考虑使用这种技术,让代理服务器将请求 均匀转发给多台内部Web服务器 ...
- Nginx正反向代理、负载均衡等功能实现配置
版权声明:本文为博主原创文章,未经博主允许不得转载. 目录(?)[+] 系统环境: VirtualBox Manager Centos6.4 nginx1.10.0 IP对应的机器名: IP ...
随机推荐
- JWPlayer 使用小记
最后的效果 1.从官网下载JWPlayer 下载后的文件,标红部分是必要的文件. 2.Jquery可以使用1.6以上版本 <html><head> <title>G ...
- ExpandableListView(三)只展开一个group,没有child不展开group
本文是自己在实践中,发现的问题. 有时候想让界面更加的人性化,就要实现很多的效果,比如只展开一个group,在点击下个group的同时,关闭之前的group 在一个ExpandableListView ...
- jquery阻止默认滑动
$(".swiper-slide").click(function(){ var index = imgarr[$(this).index()]; var content = &q ...
- JavaScript 实现Map
var map=new Map(); map.put("a","A");map.put("b","B");map.put ...
- linux c 通过文件描写叙述符获取文件名称
在linux中每一个被打开的文件都会在/proc/self/fd/文件夹中有记录,当中(/proc/self/fd/文件描写叙述符号:这个文件是符号文件)的文件就是文件描写叙述符所相应的文件. 而re ...
- BootStrap 智能表单系列 八 表单配置json详解
本章属于该系列的高级部分,将介绍表单中一些列的配置 1.config列的配置: 主要用于控制布局 :config:{autoLayout:true|'1,2,2,4'} true:根据配置项最里层的数 ...
- iOS:原生二维码扫描
做iOS的二维码扫描,有两个第三方库可以选择,ZBar和ZXing.今天要介绍的是iOS7.0后AVFoundation框架提供的原生二维码扫描. 首先需要添加AVFoundation.framewo ...
- POJ 1840 Brainman(逆序对数)
题目链接:http://poj.org/problem?id=1804 题意:给定一个序列a[],每次只允许交换相邻两个数,最少要交换多少次才能把它变成非递降序列. 思路:题目就是要求逆序对数,我们知 ...
- BestCoder Round #46
1001 YJC tricks time 题目链接:1001 题意:给你时针和分针所成的角度,输出现在的时间,以10秒为单位 思路:每10秒,分针走1度,时针走分针的1/12,我们可以根据时间来分别计 ...
- UVa 1658 Admiral(最小费用最大流)
拆点费用流 --------------------------------------------------------------------- #include<cstdio> # ...