`
nannan408
  • 浏览: 1783202 次
  • 性别: Icon_minigender_1
  • 来自: 深圳
社区版块
存档分类
最新评论

架构师之----squid,nginx,lighttpd反向代理的区别

 
阅读更多
1.前言。
  如题。

2.内容。
摘自:http://www.cnblogs.com/yihang/archive/2010/12/19/1910363.html
squid,nginx,lighttpd反向代理的区别

反向代理从传输上分可以分为2种:

1:同步模式(apache-mod_proxy和squid)

2:异步模式(lighttpd 和 nginx)

 

在nginx的文档说明中,提到了异步传输模式并提到它可以减少后端连接数和压力,这是为何?

下面就来讲解下传统的代理(apache/squid)的同步传输和lighttpd,nginx的异步传输的差异。

看图:

 


同步传输:浏览器发起请求,而后请求会立刻被转到后台,于是在浏览器和后台之间就建立了一个通道。在请求发起直到请求完成,这条通道都是一直存在的。
异步传输:浏览器发起请求,请求不会立刻转到后台,而是将请求数据(header)先收到nginx上,然后nginx再把这个请求发到后端,后端处理完之后把数据返回到nginx上,nginx将数据流发到浏览器,这点和lighttpd有点不同,lighttpd是将后端数据完全接收后才发送到浏览器。

小结:apache和squid的反向会增加后端web的负担,因为每个用户请求都会在proxy上与后端server建立的长久链接,知道数据取完前,连接都不会消失。因为wan速度与lan速度的不同,虽然lan之间的速度是极度快的,但是用户的wan连接决定了这个时间长。而lighttpd和nginx的异步模式,是不管你用户要求的数据有多大,都是先收下来,再与后端联系,这是非常迅速的速度,所以proxy与后端连接时间也会很短,几十M的东西也是几秒内。后端不需要维护这么多连接。而lighttpd也和nginx不同的异步,lighttpd是先收完再转向客户浏览器,而nginx是边收数据边转向用户浏览器。

 

 

那么这到底有什么好处呢?

1. 假设用户执行一个上传文件操作,因为用户网速又比较慢,因此需要花半个小时才能把文件传到服务器。squid的同步代理在用户开始上传后就和后台建立了连接,半小时后文件上传结束,由此可见,后台服务器连接保持了半个小时;而nginx异步代理就是先将此文件收到nginx上,因此仅仅是nginx和用户保持了半小时连接,后台服务器在这半小时内没有为这个请求开启连接,半小时后用户上传结束,nginx才将上传内容发到后台,nginx和后台之间的带宽是很充裕的,所以只花了一秒钟就将请求发送到了后台,由此可见,后台服务器连接保持了一秒。同步传输花了后台服务器半个小时,异步传输只花一秒,可见优化程度很大。

2. 在上面这个例子中,假如后台服务器因为种种原因重启了,上传文件就自然中断了,这对用户来说是非常恼火的一件事情,想必各位也有上传文件传到一半被中断的经历。用nginx代理之后,后台服务器的重启对用户上传的影响减少到了极点,而nginx是非常稳定的并不需要常去重启它,即使需要重启,利用kill -HUP就可以做到不间断重启nginx。

3. 异步传输可以令负载均衡器更有保障,为什么这么说呢?在其它的均衡器(lvs/haproxy/apache等)里,每个请求都是只有一次机会的,假如用户发起一个请求,结果该请求分到的后台服务器刚好挂掉了,那么这个请求就失败了;而nginx因为是异步的,所以这个请求可以重新发往下一个后台,下一个后台返回了正常的数据,于是这个请求就能成功了。还是用用户上传文件这个例子,假如不但用了nginx代理,而且用了负载均衡,nginx把上传文件发往其中一台后台,但这台服务器突然重启了,nginx收到错误后,会将这个上传文件发到另一台后台,于是用户就不用再花半小时上传一遍。

4. 假如用户上传一个10GB大小的文件,而后台服务器没有考虑到这个情况,那么后台服务器岂不要崩溃了。用nginx就可以把这些东西都拦在nginx上,通过nginx的上传文件大小限制功能来限制,另外nginx性能非常有保障,就放心的让互联网上那些另类的用户和nginx对抗去吧。

用异步传输会造成问题:

后台服务器有提供上传进度的功能的话,用了nginx代理就无法取得进度,这个需要使用nginx的一个第三方模块来实现。


分享到:
评论

相关推荐

    squid和nginx配置正向代理访问API接口.rar

    总结一下,"squid和nginx配置正向代理访问API接口"涉及的关键知识点包括正向代理的概念、Squid和Nginx的代理功能、配置这两者的步骤、以及安全性控制和优化策略。正确配置和使用这两个工具可以帮助企业构建高效、...

    squid反向代理配置例子

    本文将详细讲解如何使用Squid进行反向代理配置,通过提供的文件名,我们可以看到有四种不同的配置场景:单站点代理、多站点代理、以及两种实现Web站点负载均衡的方法(sibling形式和常规方式)。 1. **单站点代理**...

    Nginx作为反向代理时传递客户端IP的设置方法

    因为架构的需要采用多级 Nginx 反向代理,但是后端的程序获取到的客户端 IP 都是前端 Nginx 的 IP,问题的根源在于后端的 Nginx 在 HTTP Header 中取客户端 IP 时没有取对正确的值。 同样适用于前端是 Squid 或者...

    Squid 反向代理配置

    ### Squid 反向代理配置详解 #### 一、实验背景及目标 本文档旨在详细介绍如何在特定环境下配置Squid作为反向代理服务器。实验环境包括一台运行Red Hat Enterprise Linux 5.5 (RHEL5.5)的虚拟机以及另一台运行...

    Linux运维-6.集群-集群视频-5、Squid缓存、代理服务-20、Squid 反向代理、ACL访问控制.mp4

    Linux运维-6.集群-集群视频-5、Squid缓存、代理服务-20、Squid 反向代理、ACL访问控

    nginx反向代理配置[借鉴].pdf

    当Apache服务器无法应对当前的并发流量,且前端的Squid缓存服务器不能有效解决问题时,可以采用Nginx作为反向代理服务器来分发请求到Apache。Nginx对于动态页面的处理能力强,支持高效的反向代理功能,能够有效提高...

    Squid缓存代理服务器的安装与配置(普通代理 透明代理 反向代理)

    Squid缓存代理服务器的安装与配置(普通代理 透明代理 反向代理) Squid缓存代理服务器是一种流行的代理服务器和Web缓存服务器软件,广泛应用于提高Web服务器速度、缓存万维网、域名系统和其他网络搜索、帮助网络...

    Centos中Squid代理服务器安装和基本设置(含反向代理)

    ### Centos中Squid代理服务器安装与基本配置(含反向代理) #### 一、Squid代理服务器概述 Squid是一个广泛使用的代理缓存服务器,它能够为用户提供透明或非透明的代理服务,同时也支持反向代理功能。在教育环境中...

    squid反向代理的学习资料

    有需要的可以学习,可以给您的网站做反向代理加速。

    详细解析用Squid实现反向代理的方法

    Squid反向代理服务器是实现反向代理的常用方法之一。它可以缓存静态的网页和图片,降低WEB服务器的负载,提高访问速度。 Squid反向代理服务器可以配置为 Cache hierarchy,以便快速地提供 WEB 内容。 Squid反向代理...

    Nginx+Squid负载均衡相关的PPT

    Nginx和Squid是两种常用的开源工具,分别以反向代理和缓存服务著称,它们在构建高性能的负载均衡系统中发挥着关键作用。 **Nginx** Nginx是一款高性能的HTTP和反向代理服务器,以其高效、稳定和轻量级的特性而闻名...

    Linux CentOS下搭建DNS+squid+nginx+mysql高可用web服务器.zip_nginx转发mysql

    Linux CentOS下搭建DNS+squid+nginx+mysql高可用web服务器.zip

    squid-2.7.STABLE9

    Squid是一个广泛使用的开源代理缓存服务器,专为提高网络性能和提供安全访问控制而设计。在2.7.STABLE9这个版本中,它代表了Squid在用C语言编写的最后一个稳定分支。这个版本因其稳定性、效率和对多种操作系统的兼容...

    LVS+Keepalived+Squid+Nginx

    在构建高性能、高可用性的Web服务架构中,`LVS(负载均衡服务器)`、`Keepalived`、`Squid`(代理缓存服务器)和`Nginx`(反向代理服务器)是四个非常关键的组件。下面将详细介绍这四个技术及其相互配合的工作原理。 1. *...

    Squid代理项目-正向和反向详细笔记文档实战案例

    【Squid 代理项目-正向和反向详细笔记文档实战案例】 Squid 是一个广泛使用的开源 HTTP 代理服务器,它支持多种代理模式,包括正向代理、透明代理和反向代理。理解这些代理类型是管理和优化网络流量的关键。 1. **...

    squid-3.5.28.tar.gz

    《Squid代理服务器详解与应用》 Squid是一个广泛应用的开源代理服务器,其最新版本为3.5.28。在互联网访问控制、内容缓存和性能优化等方面,Squid扮演着至关重要的角色。本文将深入探讨Squid的基本概念、功能特性...

    nginx+apache+mysql+php+memcached+squid搭建门户网站

    - **Squid**:安装并配置Squid作为反向代理,同时利用其缓存功能进一步提高服务器响应速度。 #### 八、后记 通过上述步骤,我们可以成功构建一个能够应对大用户量访问的门户网站服务器集群。在实际部署过程中,还...

    电子商务网站基础架构 nginx + memcached + tomcat + squid 集群

    在构建高性能、高可用性的电子商务网站时,常常采用一种混合技术架构,如“nginx + memcached + tomcat + squid 集群”。这种架构旨在优化性能、提高可扩展性和提供负载均衡,确保即使在高流量情况下也能保持稳定的...

    docker-squid, Dockerfile为Squid代理服务器创建 Docker 容器映像.zip

    docker-squid, Dockerfile为Squid代理服务器创建 Docker 容器映像 sameersbn/squid: 3 。3 。8-23简介 。问题正在开始运行。安装工具快速入门命令行参数持久性解决方案配置文件使用情况日志记录维护工具升级插件...

Global site tag (gtag.js) - Google Analytics