一、反向代理

正向代理:

客户端要获取的资源就在服务器上,客户端请求的资源路径就是最终响应资源的服务器路径,这就是正向代理。正向代理的特点:就是我们明确知道要访问哪个网站地址。

反向代理:

客户端想获取服务器集群中(服务1,服务2,服务3 他们的资源相同)中的资源,但是客户端无法与该服务器集群建立连接,但我们可以与另一台服务器(代理服务器)建立连接且该服务器能获取服务器集群中的资源。这个时候客户端就可以通过请求代理服务器,获取想要的资源,但客户端并不知道给他资源的是哪个服务器。这种方式就是反向代理。

二、负载均衡

  当一台服务器的单位时间内的访问量越大的时候,服务器的压力会越大。当一台服务器压力大得超过自身的承受能力的时候,服务器会崩溃。为了避免服务器崩溃,让用户有更好地体验,我们通常通过负载均衡的方式来分担服务器的压力。那么什么是负载均衡呢?我们通过建立很多个服务器,把这些服务器组成一个服务器集群,然后,当用户访问我们网站的时候,先访问一个中间服务器,再让这个中间服务器在服务器集群中选择一个压力较小的服务器,然后将该访问请求引入该选择的服务器。这样,用户的每次访问,都会保证服务器集群中的每个服务器的压力趋于平衡,分担了服务器压力,避免了服务器崩溃的情况。负载均衡就是采用反向代理的思想。

三、Nginx中负载均衡的实现

Nginx是一款可以通过反向代理实现负载均衡的服务器,使用Nginx服务实现负载均衡的时候,用户的访问首先会访问到Nginx服务器,然后Nginx服务器再从服务器集群表中选择压力较小的服务器,然后将该访问请求引向该服务器。若服务器集群中的某个服务器崩溃,那么从待选服务器列表中将该服务器删除,也就是说一个服务器假如崩溃了,那么Nginx就肯定不会将访问请求引入该服务器了。

1、创建fzjh.conf配置文件

  在/usr/local/nginx/conf下创建fzjh.conf文件,文件内容如下:

user  nobody;
worker_processes 2;
events {
worker_connections 1024;
}
http{
#=upstream设置负载均衡的待选服务器列表,在运行中如果有服务器崩溃那该服务器就会在该列表中移除
upstream mypro{
server 219.133.55.36;#中国万维网
server 115.239.210.27;#百度的ip
}
server{
listen 8080;
#====== 对ngnix更目录做负载均衡===
location / {
#==选择要代理的服务器要与upstream对应==========
proxy_pass http://mypro;
}
}
}

2、加载fzjh.conf配置文件

 执行命令: /usr/local/nginx/sbin/nginx -c /usr/local/nginx/conf/fzjh.conf

3、测试是否成功

  在这里我们的负载均衡待选服务器列表是百度和中国万维网,也就说我们访问我的主机名+8080 就可以进行测试,如果页面在百度与中国万维网中切换,就表示成功。

  我的主机是我的阿里元服务器大家可以试试:http://www.jalja.org:8080

四、Upstream模块详解

Upstream模块:该模块是Nginx服务器的一个重要模块。Upstream模块实现在轮询和客户端ip之间实现后端的负载均衡。常用的指令有ip_hash指令、server指令和upstream指令等。该模块主要进行轮询算法。upstream指令主要是用于设置一组可以在proxy_pass和fastcgi_pass指令中使用额代理服务器,默认负载均衡方式为轮询。

ip_hash指令:在负载均衡系统中,假如用户在某台服务器上登录,那么如果该用户第二次请求的时候,因为我们是负载均衡系统,每次请求都会重新定位到服务器集群中的一个服务器,那么此时如果将已经登录服务器A的用户再定位到其他服务器,显然不妥。故而,我们可以采用ip_hash指令解决这个问题,如果客户端请求已经访问了服务器A并登录,那么第二次请求的时候,会将该请求通过哈希算法自动定位到该后端服务器中。简单说ip_hash指令可以实现当用户使用同一浏览器在A服务器登录后,那他后续的所有请求都在同一服务器中进行,Nginx代理服务器不会将他的请求分配到其他服务器上,以此规避用户登录信息在不同服务器间流转的问题,从而保证用户只需登录一次。

ip_hash的使用:在fzjh.conf配置文件中开启该功能

server指令: 主要用于指定服务器的名称和参数。

使用:在fzjh.conf配置文件中开启该功能

注意:在实际开发中weight不要与ip_hash同时使用

负载均衡不同实现方式的优缺点:假如使用硬件的方式实现负载均衡,那么中间的转发机构就是硬件,这个时候运行的效率非常高,但是对应的成本也非常高。如果我们采用软件的方式来实现负载均衡,那么中间的转发机构就是软件,这个时候,运行效率不如硬件,但是成本相对来说低得多。而使用Nginx服务器实现负载均衡,那么就是通过软件的方式来实现负载均衡,并且Nginx本身支持高并发等。故而使用Nginx服务器实现负载均衡,能大大节约企业的成本,并且由于Nginx是服务器软件,其执行效率也是非常高。

Nginx服务器 之反向代理与负载均衡的更多相关文章

  1. LINUX学习-Nginx服务器的反向代理和负载均衡

    一.准备环境 1.准备3台服务器: 1)192.168.88.10 --Nginx服务器 2)192.168.88.20 --apache服务器 3)192.168.88.30 --apache服务器 ...

  2. Nginx的upstream反向代理、负载均衡详解

    这篇文章的前提是已经配置好了NGINX,而且tomcat已经配置好了,而且能能够访问了. 说反向代理之前,我们先看看正向代理,正向代理也是大家最常接触的到的代理模式. 正向代理最大的特点是客户端非常明 ...

  3. nginx详解反向代理、负载均衡、LNMP架构上线动态网站(week4_day1_part1)-技术流ken

    nginx介绍 Nginx是俄罗斯人编写的十分轻量级的HTTP服务器,Nginx,它的发音为“engine X”,是一个高性能的HTTP和反向代理服务器,同时也是一个IMAP/POP3/SMTP 代理 ...

  4. nginx详解反向代理、负载均衡、LNMP架构上线动态网站

    简介 Nginx是俄罗斯人编写的十分轻量级的HTTP服务器,Nginx,它的发音为“engine X”,是一个高性能的HTTP和反向代理服务器,同时也是一个IMAP/POP3/SMTP 代理服务器.N ...

  5. 循序渐进nginx(二):反向代理、负载均衡、缓存服务、静态资源访问

    目录 反向代理 使用 1.创建代理目标服务端: 2.配置nginx反向代理目标服务端: 3.测试使用: 负载均衡 使用 1.准备服务端 2.修改nginx配置 3.测试 负载均衡策略 负载均衡的额外参 ...

  6. Nginx(三):反向代理,负载均衡

    环境准备   配置反向代理,负载均衡,动静分离需要的必备环境,JDK,2个tomcat开启8080和8081端口. 安装jdk [root@localhost ~]# rpm -qa|grep jav ...

  7. Nginx七层反向代理和负载均衡

    1.介绍 1.1 Nginx不仅是一个出色的web软件,其七层代理和负载均衡也是相当出色.Nginx做前端代理,当用户请求服务时,可以根据url进行判断,然后分配到不同的后台webserver上. 1 ...

  8. Nginx 笔记(三)nginx 配置实例 - 反向代理、负载均衡、动静分离

    个人博客网:https://wushaopei.github.io/    (你想要这里多有) 一.反向代理 反向代理准备工作: (1)在 liunx 系统安装 tomcat,使用默认端口 8080 ...

  9. Nginx反向代理以及负载均衡配置

    项目地址:http://git.oschina.net/miki-long/nginx 前提:最近在研究nginx的用法,在windows上小试了一下,由于windows下不支持nginx缓存配置,所 ...

随机推荐

  1. 【.net 深呼吸】细说CodeDom(5):类型成员

    前文中,老周已经厚着脸皮介绍了类型的声明,类型里面包含的自然就是类型成员了,故,顺着这个思路,今天咱们就了解一下如何向类型添加成员. 咱们都知道,常见的类型成员,比如字段.属性.方法.事件.表示代码成 ...

  2. win7安装时,避免产生100m系统保留分区的办法

    在通过光盘或者U盘安装Win7操作系统时,在对新硬盘进行分区时,会自动产生100m的系统保留分区.对于有洁癖的人来说,这个不可见又删不掉的分区是个苦恼.下面介绍通过diskpart消灭保留分区的办法: ...

  3. [原]一个针对LVS的压力测试报告

    LVS 测试报告 测试计划 基本功能测试 流量压力测试 响应时间测试 配置正确性测试 灾难恢复测试 测试点 基本功能测试 客户端IP地址正确性 RealServer 访问Internet测试(包括Ip ...

  4. 玩转ajax

    1.什么是ajax? Ajax 是 Asynchronous JavaScript and XML(以及 DHTML 等)的缩写. 2.ajax需要什么基础? HTML 用于建立 Web 表单并确定应 ...

  5. animate.css(第三方动画使用方法)

    p.p1 { margin: 0.0px 0.0px 0.0px 0.0px; font: 17.0px Monaco; color: #a5b2b9 } animation 语法: animatio ...

  6. iosselect:一个js picker项目,在H5中实现IOS的select下拉框效果

    具体文档和demo可以访问github:https://github.com/zhoushengmufc/iosselect 移动端浏览器对于select的展示样式是不一致的,ios下是类似原生的pi ...

  7. 深入理解css3中nth-child和 nth-of-type的区别

    在css3中有两个新的选择器可以选择父元素下对应的子元素,一个是:nth-child 另一个是:nth-of-type. 但是它们到底有什么区别呢? 其实区别很简单::nth-of-type为什么要叫 ...

  8. Supermap iCloudManager -负载均衡

    Supermap icm负载均衡理解: 应用场景:地图出图 子节点1和子节点2中的服务保持一致,一般情况下设置的是匿名用户通过nginx访问服务信息,所以不需要登录. 1.通过nginx分发请求,(轮 ...

  9. Android Weekly Notes Issue #236

    Android Weekly Issue #236 December 18th, 2016 Android Weekly Issue #236 本期内容包括: Google的物联网平台Android ...

  10. 从史上八大MySQL事故中学到的经验

    本文列举了史上八大MySQL宕机事件原因.影响以及人们从中学到的经验,文中用地震级数来类比宕机事件的严重性和后果,排在最严重层级前两位的是由于亚马逊AWS宕机故障(相当于地震十级和九级). 一.Per ...