`
xupo
  • 浏览: 216780 次
  • 性别: Icon_minigender_1
  • 来自: 北京
社区版块
存档分类
最新评论

Nginx深入分析

 
阅读更多

nginx反向代理异步传输模式(原理)

参考文章:http://wenku.baidu.com/view/fef7ac6d1eb91a37f1115cb3.html

来讲解下传统的代理(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 技术 分析

    通过对源码的分析,我们可以更深入理解Nginx的工作流程和内部机制,进一步提升其在实际部署中的效率和可靠性。为了更好地利用Nginx,开发者需要熟悉配置文件的编写、模块的使用以及如何根据业务需求调整配置参数。...

    nginx源码分析

    11. **源码分析方法**:分析 nginx 源码需要从主函数(main)开始,逐步理解启动过程,然后分解问题,深入分析关键部分。同时,通过编写测试用例和修改代码来加深理解,并与其他开发者交流以避免误区。 12. **代码...

    Nginx 源码分析笔记

    本笔记将深入探讨Nginx的内存管理、数组操作、队列和哈希表等核心概念。 首先,我们来看Nginx的内存管理。Nginx使用内存池(Memory Pool)来高效地分配和管理内存。内存池是一种一次性分配大量内存,然后在内部进行...

    nginx日志分析技巧.zip

    在IT行业中,尤其是在服务器管理和网络...总的来说,通过深入分析nginx日志,我们可以获取丰富的信息,为服务器管理、性能优化和业务决策提供强有力的支持。正确理解和应用这些技巧,将极大地提升IT运维的效率和质量。

    Nginx日志分析工具_seo必备网站百度蜘蛛抓取记录查询

    综上所述,Nginx日志分析工具是SEO优化和网站管理不可或缺的利器,它能够提供深入的洞见,帮助优化网站内容,提升搜索引擎排名,确保网站健康运行。通过对Nginx日志的详尽分析,我们可以更好地理解用户需求,改善...

    Nginx源代码分析.pdf

    通过以上分析,我们可以看出Nginx在设计上注重模块化、可移植性和内存管理的高效性。深入研究Nginx的源代码,能帮助开发者理解如何构建高性能、低延迟的网络服务,并为自定义扩展提供基础。对于想要优化服务器性能或...

    深入理解Nginx-陶辉-2版本.pdf.zip

    7. **日志管理**:Nginx的日志功能可以帮助监控服务器状态,进行性能分析和故障排查。 8. **模块扩展**:Nginx的模块化设计使其具备高度可扩展性,可以安装第三方模块以实现更多功能,如限速、访问控制等。 9. **...

    深入理解nginx

    本书是阿里巴巴资深Nginx技术专家呕心沥血之作,是作者多年的经验结晶,也...在此基础上,综合Nginx框架代码分析Nginx的架构,介绍其设计理念和技巧,进一步帮助读者自由、有效地开发出功能丰富、性能一流的Nginx模块。

    nginx源码分析--带注释

    在本文中,我们将深入探讨Nginx的源代码分析,主要关注那些被特别注释的部分,以帮助我们更好地理解和利用这个高性能的Web服务器和反向代理。Nginx以其高效、稳定和模块化的架构而闻名,是许多大型网站和应用程序的...

    nginx源码分析文档

    ### Nginx源码分析知识点概述 #### 一、Nginx架构与核心组件解析 在深入探讨Nginx源代码之前,我们首先需要了解Nginx的基本架构及其核心组件。 1. **worker进程**:Nginx启动时会创建一个master进程和多个worker...

    nginx源码分析-高性能服务器编写

    本文旨在深入分析Nginx的核心设计原理及其实现技巧,特别是通过源码层面来探索其成为现代高性能Web服务器的原因。 #### 基本配置 **安装**:Nginx可以通过官方提供的包管理工具或手动编译安装。对于初学者来说,...

    goaccess—nginx 日志分析工具

    GoAccess 是一款开源、快速且轻量级的日志分析工具,专门设计用于实时地分析Apache、Nginx等Web服务器的访问日志。它以终端界面展示,能够生成丰富的统计报告,帮助管理员更好地理解和优化网站的访问情况。 在深入...

    深入理解Nginx模块开发与架构解析 第2版

    同时,书中还会分析Nginx的缓存机制和日志记录,这些都是运维中常见的优化手段。 在模块开发部分,读者将学习到如何编写Nginx模块,包括HTTP模块、HTTPS模块、URL重写模块、访问控制模块等。这涵盖了从模块结构、...

    实时Nginx分析和诊断工具nginx-systemtap-toolkit.zip

    本文将深入探讨一个强大的开源工具——nginx-systemtap-toolkit,它基于SystemTap技术,为实时分析和诊断Nginx提供了解决方案。 首先,我们需要理解SystemTap的基础概念。SystemTap是一种动态跟踪工具,允许开发者...

    《理解 Nginx 源码》.pdf

    《理解 Nginx 源码》.pdf

    Nginx入门到实践 Nginx 中间件

    **Nginx 入门到实践:深入了解 Nginx 中间件** Nginx 是一款高性能的 HTTP 和反向代理服务器,广泛应用于互联网行业的网站部署和负载均衡。它以其轻量级、高并发处理能力而闻名,同时也常作为中间件在分布式系统中...

    深入理解Nginx模块开发与架构解析第2版PDF

    接着,综合Nginx框架代码分析了Nginx架构的设计理念和技巧,此外,还新增了如何在模块中支持HTTP变量,以及与slab共享内存等相关的内容,相信通过完善,可进一步帮助读者更好地开发出功能丰富、性能—流的Nginx模块...

Global site tag (gtag.js) - Google Analytics