nginx反向代理服务器的工作原理_ywltoread的博客-程序员宅基地_nginx反向代理的工作原理

技术标签: nginx  

      最近有打算研读nginx源代码,看到网上介绍nginx可以作为一个反向代理服务器完成负载均衡。所以搜罗了一些关于反向代理服务器的内容,整理综合。

       一  概述          

               反向代理(Reverse Proxy)方式是指以代理服务器来接受Internet上的连接请求,然后将请求转发给内部网络上的服务器;并将从服务器上得到的结果返回给Internet上请求连接的客户端,此时代理服务器对外就表现为一个服务器。

               通常的代理服务器,只用于代理内部网络对Internet的连接请求,客户机必须指定代理服务器,并将本来要直接发送到Web服务器上的http请求发送到代理服务器中。当一个代理服务器能够代理外部网络上的主机,访问内部网络时,这种代理服务的方式称为反向代理服务。

图1  反向代理服务器的基本原理

       二  反向代理服务器的工作原理

                    反向代理服务器通常有两种模型,它可以作为内容服务器的替身,也可以作为内容服务器集群的负载均衡器。

              1,作内容服务器的替身                     

                     如果您的内容服务器具有必须保持安全的敏感信息,如信用卡号数据库,可在防火墙外部设置一个代理服务器作为内容服务器的替身。当外部客户机尝试访问内容服务器时,会将其送到代理服务器。实际内容位于内容服务器上,在防火墙内部受到安全保护。代理服务器位于防火墙外部,在客户机看来就像是内容服务器。

                   当客户机向站点提出请求时,请求将转到代理服务器。然后,代理服务器通过防火墙中的特定通路,将客户机的请求发送到内容服务器。内容服务器再通过该通道将结果回传给代理服务器。代理服务器将检索到的信息发送给客户机,好像代理服务器就是实际的内容服务器(参见图 2)。如果内容服务器返回错误消息,代理服务器会先行截取该消息并更改标头中列出的任何 URL,然后再将消息发送给客户机。如此可防止外部客户机获取内部内容服务器的重定向 URL(URL重定向,是指当使用者浏览某个网址时,将他导向到另一个网址的技术。常用在把一串很长的网站网址,转成较短的网址。因为当要传播某网站的网址时,常常因为网址太长,不好记忆;又有可能因为换了网路的免费网页空间,网址又必须要变更,不知情的使用者还以为网站关闭了。这时就可以用网路上的转址服务了。这个技术使一个网页是可借由不同的统一资源定位符连结)。

                  这样,代理服务器就在安全数据库和可能的恶意攻击之间提供了又一道屏障。与有权访问整个数据库的情况相对比,就算是侥幸攻击成功,作恶者充其量也仅限于访问单个事务中所涉及的信息。未经授权的用户无法访问到真正的内容服务器,因为防火墙通路只允许代理服务器有权进行访问。

                 

图2  反向代理服务器作为内容服务器的替身

                   可以配置防火墙路由器,使其只允许特定端口上的特定服务器(在本例中为其所分配端口上的代理服务器)有权通过防火墙进行访问,而不允许其他任何机器进出。

               2,作为内容服务器的负载均衡器

                   可以在一个组织内使用多个代理服务器来平衡各 Web 服务器间的网络负载。在此模型中,可以利用代理服务器的高速缓存特性,创建一个用于负载平衡的服务器池。此时,代理服务器可以位于防火墙的任意一侧。如果 Web 服务器每天都会接收大量的请求,则可以使用代理服务器分担 Web 服务器的负载并提高网络访问效率。

                   对于客户机发往真正服务器的请求,代理服务器起着中间调停者的作用。代理服务器会将所请求的文档存入高速缓存。如果有不止一个代理服务器,DNS 可以采用“循环复用法”选择其 IP 地址,随机地为请求选择路由。客户机每次都使用同一个 URL,但请求所采取的路由每次都可能经过不同的代理服务器。

                   可以使用多个代理服务器来处理对一个高用量内容服务器的请求,这样做的好处是内容服务器可以处理更高的负载,并且比其独自工作时更有效率。在初始启动期间,代理服务器首次从内容服务器检索文档,此后,对内容服务器的请求数会大大下降。

图3  反向代理服务器作为负载均衡器

 

 

转自:

    1,http://blog.csdn.net/keyeagle/article/details/6723408

版权声明:本文为博主原创文章,遵循 CC 4.0 BY-SA 版权协议,转载请附上原文出处链接和本声明。
本文链接:https://blog.csdn.net/ywl570717586/article/details/51556912

智能推荐

Halcon学习之文本操作_xinrui_hhuc的博客-程序员宅基地_halcon换行符怎么弄

<br /> 1、         新建文本文件<br />open_file ( : :FileName, FileType : FileHandle ) 创建( 'output' or 'append' )或者打开(input)文本文件<br />2、         写文本<br />fwrite_string( : : FileHandle, String : )<br />例如:fwrite_string (FileHandle, i + ' ' + Area)<br />3、

最良心的chrome插件可以良心到什么程度?_区块链大本营的博客-程序员宅基地

CSDN下起了红包雨399 元智能音箱+199 元天猫精灵300元现金红包/会员+100元红包/会员更有千万流量曝光100%有奖......作为日常总发现 &#34; 宝藏 &#34;的...

Spring application文件配置_wang_zhi_peng2007的博客-程序员宅基地

application文件配置&amp;lt;?xml version=&quot;1.0&quot; encoding=&quot;UTF-8&quot;?&amp;gt;&amp;lt;beans xmlns=&quot;http://www.springframework.org/schema/beans&quot; xmlns:xsi=&quot;http://www.w3.org/2001/XMLSchema-instance&quot; xmlns:...

Lucene 索引_web前行者的博客-程序员宅基地

1.索引部分(I am a boy)~1.基本概念~2.索引过程~3.索引建立步骤注意点:indexReader 应该是单例的(重要)/** /**  * 创建索引  */ @Test public void creatIndex(){  try {   //1.创建Directory 通过Directory的创建指定索引存放位置      //

Java入门学习笔记_上官刘备的博客-程序员宅基地

Java基础本文章是作者的学习笔记,帮助初学者快速入门,内容讲的不是很细,适合初学者,不定时更新。目录Java基础数据类型1.基本类型(primitive type)1-1 整数类型1-2 浮点类型1-3 字符类型1-4 boolean类型2.引用数据类型3.类型转换3-1 内存溢出和强制转换3-2 自动类型转换变量1.类变量(静态变量)2.实例变量3.局部变量4.常量运算符(4)三元运算符顺序结构与循环1-1 if选择结构略1-2 Switch选择结构(2)switch高级应用1-3 While循环

谈谈你所了解的python_Python笔试题&面试题总结_weixin_39987926的博客-程序员宅基地

黑色加粗的是笔试题,蓝色是面试题1.什么是GIL2.Python中的@staticmethod和@classmethod的区别 (**)3.Python里面如何拷贝一个对象,并解析深浅拷贝4.Python里面的search()和match()的区别5.简述迭代器生成器以及他们之间的区别6.什么是协程,Python中的协程是如何实现的7.什么是装饰器,请使用装饰器实现singletion。8.请使用...

随便推点

CRM提升汽车行业核心竞争力_runwellcrm2的博客-程序员宅基地

  近几年,随着经济的高速发展,中国的汽车产业也变得蒸蒸日上,众多企业开始携大量资金涉足汽车行业。纵观整个国内汽车市场,奥迪A4中国生产及国产化程度的提高、宝马3系及5系下线、奔驰合资产品的即将推出、凯越等通用产品线的延伸等等都表明了国内的汽车市场即将火爆。与此同时,国内市场对汽车行业的要求也日益提高,其原因主要来源于客户对汽车产品及相关服务需求的日益上升。因此,更多的汽车企业开始注意到必须以用户

基于geolocation来获取经纬度地址_weixin_30552811的博客-程序员宅基地

  以前如果要获取互联网用户所在地都是根据用户的IP地址来获取地理位置,这样获取到的数据和真实数据有很大的偏差。为了获取更加精确的位置,可以使用了html5的geolocation来获取经纬度,然后再获取所在地理位置,如何获取,我在下面会说到。先说下基本概念。  Geolocation在的navigator 对象中,我们可以通过 navigator.geolocation 来使用它。不支持 g...

计算机接口 考研,2021计算机考研知识点:I/O接口_九千步的博客-程序员宅基地

2021计算机考研知识点:I/O接口什么是I/O接口?为什么要设置I/O接口?I/O接口如何分类?解: I/O接口一般指CPU和I/O设备间的连接部件; I/O接口分类方法很多,主要有:按数据传送方式分有并行接口和 串行接口两种;按数据传送的控制方式分有程序控制接口、程序中断接口、DMA接口三种。程序查询接口工作过程解:程序查询接口工作过程如下(以输入为例):开命令接收门;选中,发SEL信号设...

mybatis xml中是sql语句报错: Error creating document instance. Cause: org.xml.sax.SAXPa_wfsm的博客-程序员宅基地

mapper写错了整合mybatis时候,mapper路径配置错了,没有找到mapper

Solr In Action 中文版 第一章 (二)_powerx_yc的博客-程序员宅基地

2019独角兽企业重金招聘Python工程师标准&gt;&gt;&gt; ...

推荐文章

热门文章

相关标签