sudone.com在nginx的反向代理介绍中,提到了异步传输模式并提到它可以减少后端连接数和压力,这是为何?下面就来讲解下传统的代理(apache/squid)的同步传输和nginx的异步传输的差异。

如图:

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

那么这到底有什么好处呢?
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的一个第三方模块来实现。

nginx反向代理异步传输模式(原理)相关推荐

  1. 一文了解 Nginx 反向代理与 conf 原理「技术干货分享」

    Nginx 主要功能 Webservice, 反向代理, 负载均衡. 推荐一个零声学院免费公开课程,个人觉得老师讲得不错,分享给大家:Linux,Nginx,ZeroMQ,MySQL,Redis,fa ...

  2. Nginx 反向代理 负载均衡 动静分离 高可用 原理

    1.Nginx简介 1.1 概述 Nginx ("engine x") 是一个高性能的 HTTP 和 反向代理服务器,特点是占有内存少,并发能力强,能经受高负载的考验,有报告表明能 ...

  3. nginx反向代理原理讲解

    一 .概述                  反向代理(Reverse Proxy)方式是指以代理服务器来接受Internet上的连接请求,然后将请求转发给内部网络上的服务器:并将从服务器上得到的结果 ...

  4. Nginx 反向代理工作原理简介与配置详解

    Nginx 反向代理工作原理简介与配置详解 测试环境 CentOS 6.8-x86_64 nginx-1.10.0 下载地址:http://nginx.org/en/download.html 安装 ...

  5. 2022年4月10日记:Linux服务器开发,King,Nginx反向代理与系统参数配置conf原理

    Nginx反向代理与系统参数配置conf原理 前言 nginx成功开源的原因: nginx三个可控入口: 惊群 总结 前言 今天学习Nginx反向代理,可以说是慕名而来.从整体上看,我对Nginx的了 ...

  6. nginx反向代理原理及配置详解

    nginx概述 nginx是一款自由的.开源的.高性能的HTTP服务器和反向代理服务器:同时也是一个IMAP.POP3.SMTP代理服务器:nginx可以作为一个HTTP服务器进行网站的发布处理,另外 ...

  7. nginx反向代理模块配置详解_nginx反向代理原理及配置详解

    nginx概述 nginx是一款自由的.开源的.高性能的HTTP服务器和反向代理服务器:同时也是一个IMAP.POP3.SMTP代理服务器:nginx可以作为一个HTTP服务器进行网站的发布处理,另外 ...

  8. 使用Nginx反向代理来实现简单的负载均衡

    Nginx反向代理的原理优点: 反向代理可以简单的理解为:代理服务器来接收internet上的服务器请求,然后将请求转发给内部的服务器上,然后将结果返回给internet上请求的客户端,所以代理服务器 ...

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

    一 .nginx 的优缺点: nginx 相对 apache 的优点: 轻量级,同样起web 服务,比apache 占用更少的内存及资源 抗并发,nginx 处理请求是异步非阻塞的,而apache 则 ...

  10. nginx反向代理缓存服务器构建

    博主QQ:819594300 博客地址:http://zpf666.blog.51cto.com/ 有什么疑问的朋友可以联系博主,博主会帮你们解答,谢谢支持! 代理服务可简单的分为正向代理和反向代理: ...

最新文章

  1. 盘点CVPR 2019影响力最大的20篇论文
  2. 项目管理知识体系实战专家胡立
  3. 【C/C++多线程编程之二】pthread简介
  4. 2019.8.13 sdfzoier
  5. 使用ASP.NET Core 3.x 构建 RESTful API - 3.2 开始建立Controller和Action
  6. java socketchannel api,SocketChannel API
  7. leetcode28. 实现 strStr()
  8. 信息学奥赛一本通 1967:【14NOIP普及组】螺旋矩阵 | 洛谷 P2239 [NOIP2014 普及组] 螺旋矩阵
  9. 社区内放自助打印机,赚钱吗?
  10. 地理空间数据Geometry在MySQL中使用(一)
  11. Mugeda(木疙瘩)H5案例课—教你做魔性H5弹幕-岑远科-专题视频课程
  12. 密码键盘介绍二:主密钥和工作密钥的导入
  13. 解决Qt5.7.0 cannot find -lGL
  14. USB device for mac
  15. Tableau学习(一)
  16. OpenCV开发笔记(四十五):红胖子8分钟带你深入了解重映射(图文并茂+浅显易懂+程序源码)
  17. docker2-镜像原理及创建新的镜像
  18. (附源码)基于java的校园二手书籍交易平台 毕业设计131558
  19. 打印机无法确认设备和计算机之间的连接,打印机和电脑连接不上怎么办_电脑怎么连接不上打印机设备-win7之家...
  20. iOS开发:下架App的步骤

热门文章

  1. HTML|下拉框和文本域、文件域
  2. 超实数与实数本是同根生
  3. 斗鱼已公开的运维技术和架构分析
  4. 属于EDG的奇迹之夜
  5. java实现批量注册_Java写的批量域名注册查询程序
  6. element-UI 图标点击切换
  7. java for循环打印平行四边形,正三角形,菱形和空心菱形
  8. 让同事主动配合工作的三点技巧|智测优聘总结
  9. 【入门级】Hibernate环境搭建
  10. python用pd.read_csv()方法来读取csv文件,用DataFrame对象.to_csv()方法来保存数据成csv文件