一、负载均衡:

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

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. [转贴]JavaScript中Array(数组)的属性和方法

    数组有四种定义的方式 使用构造函数:var a = new Array();var b = new Array(8); var c = new Array("first", &qu ...

  2. delphi关于文件操作集锦

        关于文件操作集锦 取得该快捷方式的指向EXE关键词:快捷方式 LNK unit Unit1; interface usesWindows, Messages, SysUtils, Varian ...

  3. 1分钟搞定超慢SQL

    前几天,一个用户的研发人员找到我了,说他们有个SQL语句非常慢,我说多慢?他们说:半个小时也没出结果.于是问他们要了SQL语句和执行计划,SQL语句就不能再这里贴出来了,下面是调整前的执行计划(略去某 ...

  4. appledoc:Objective-C注释文档生成工具

    appledoc是帮助Objective-C开发者从特殊格式的源代码注释中生成类似apple资源代码帮助文档的命令行工具. 安装和使用都非常简单: 安装 git clone git://github. ...

  5. HDU1200:To and Fro

    Problem Description Mo and Larry have devised a way of encrypting messages. They first decide secret ...

  6. ceph启动脚本

    放在/etc/init.d/目录下,用法如下: root@u253:~# /etc/init.d/ceph === mon.a === usage: /etc/init.d/ceph [options ...

  7. SQL Server 数据控制语句(DCL)

    DCL控制语句用来设置更改用户或角色的权限. 授予权限操作——GRANTSQL Server服务器通过手语权限表来控制用户对数据库的访问.在数据库中添加一个新用户之后,若不尽兴额外操作,该用户只有ch ...

  8. 过程需要类型为 'ntext/nchar/nvarchar' 的参数 '@statement'

    declare   @Sql Nvarchar(4000)   SET @Sql = ' select * from a_table '要么这样, 要不然在执行存储过程变量前加N'' ALTER PR ...

  9. Android UiAutomator 自动化测试环境搭建---新手1

    1.首先需要准备的工具有 1.java jdk 2. android开发工具 adt 3.ant 安装包(如果下载adt里面有) 2.首先安装java环境,jdk这个百度就可以了. 3.android ...

  10. struts2 taglib struts标签学习整理中

    项目中经常会用到struts标签,这样可以减少代码量. select用法: <s:select list="#request.sysTypes" name="rul ...