nginx技术(3)反向代理和负载均衡

反向代理和负载均衡

一,传统的代理(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对抗去吧。

用异步传输会造成问题:

更多精彩内容:http://www.bianceng.cnhttp://www.bianceng.cn/Servers/web/

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

三,nginx设置异步代理

在http域设置如下参数

参数说明

时间: 2024-10-31 23:07:19

nginx技术(3)反向代理和负载均衡的相关文章

nginx配置详解-url重写、反向代理、负载均衡

应用层的负载均衡 master/worker结构:一个master进程,生成一个或多个worker子进程 nginx请求的连接方式epoll 是Linux下多路复用IO接口select/poll的增强版本 select 遍历epoll无需遍历 1.nginx安装(未安装邮件服务器模块) ./configure --help查看编译选项 配置文件中路径没加/以prefix指定的路径开始./configure \--prefix=/usr \--sbin-path=/usr/sbin/nginx \

Nginx反向代理,负载均衡,redis session共享,keepalived高可用

相关知识自行搜索,直接上干货... 使用的资源: nginx主服务器一台,nginx备服务器一台,使用keepalived进行宕机切换. tomcat服务器两台,由nginx进行反向代理和负载均衡,此处可搭建服务器集群. redis服务器一台,用于session的分离共享. nginx主服务器:192.168.50.133 nginx备服务器:192.168.50.135 tomcat项目服务器1:192.168.50.137 tomcat项目服务器2:192.168.50.139 redis服

Nginx反向代理实现负载均衡配置图解

首先简单的介绍下nginx作为反向代理实现负载均衡. 反向代理方式是指以反向代理服务器来接受互联网上的连接请求,然后将请求转发给内部网络上的服务器,并将从服务器上得到的结果返回给互联网上请求连接的客户端,此时反向代理服务器对外就表现为一个服务器.让互联网上的主机通过不同的域名访问不同的内部网主机资源,使内部网主机免受外部网主机攻击,实现负载均衡和缓存功能,很大程度上减轻web服务器的负担?提高访问速度.   一个简单的Nginx作为反向代理实现负载均衡. 就如上图所示,我简单的建了一个环境,以3

在不同端口下模拟 Nginx 反向代理和负载均衡

Nginx 是一个轻量级的 WEB 服务器,反向代理服务器和电子邮件服务器,本文介绍在虚拟机中使用不同的端口来模拟不同的服务器,并使用 Nginx 反向代理功能实现服务器负载均衡的效果. 新建两个站点 首先新建两个 WEB 目录当做不同的服务器下的站点,一个是 website-A,一个是 website-B. 这两个站点目录应该是在不同的服务器上,而且代码是一模一样的,这里为了方便在一台虚拟机上模拟不同服务器,并且把两个站点目录下的首页做了一点修改,以区分访问到的是不同目录(服务器)下的站点.两

debian+nginx+php环境实现反向代理和负载均衡教程

配置nginx的PHP环境 安装nginx     sudo apt-get install nginx 安装nginx就可以通过下面地址来访问了:http://localhost/ 安装php     sudo apt-get install php5-cli php5-cgi php5-fpm php5-mcrypt php5-fpm:与nginx配合方式之一,另外个是:spawn-fcgi. 配置nginx的虚拟主机 在/etc/nginx/sites-available/default中

详解Nginx反向代理和负载均衡部署指南_nginx

Nginx反向代理和负载均衡部署指南,具体如下: 1.  安装 1) 从Nginx官网下载页面(http://nginx.org/en/download.html)下载Nginx最新版本(目前是1.5.13版本)安装包: 2)  解压后复制到部署目录.  2.  启动和停止Nginx Nginx目前只支持命令行操作,操作前先进入Dos命令环境,并进入Nginx部署目录. 1) 启动Nginx:start nginx 2)  停止Nginx:nginx -s stop 3)修改配置后重启:ngin

apache实现反向代理、负载均衡及会话保持配置

apache的反向代理及负载均衡效率以及配置过程都比nginx麻烦.在这研究apache的负载均衡只是为了对比其它软件的优缺点. 测试过程如下: 查看是否安装proxy模块: [root@localhost ~]# httpd -M | grep proxy httpd: Could not reliably determine the server's fully qualified domain name, using localhost.localdomain for ServerName

Nginx 反向代理、负载均衡、页面缓存、URL重写以及读写分离

1.环境准备 前端Nginx:10.160.65.44 后端WEB服务器两台:10.160.65.49/10.160.65.50 2.安装Nginx: 下载nginx-1.9.15.tar.gz,放置在目录/usr/local/src目录下面,解压. ./configure make & make install 在/usr/local/目录下生成了nginx目录 configure的时候可以带很多参数,参数的详细解释如下: –prefix= 指向安装目录 –sbin-path 指向(执行)程序

Tomcat安装+Nginx反向代理Tomcat+Apache使用mod_jk+mod_proxy反向代理和负载均衡【图解】

一.Tomcat简介 Tomcat是Apache软件基金会(Apache Software Foundation)的Jakarta 项目中的一个核心项目由Apache.Sun 和其他一些公司及个人共同开发而成.由于有了Sun 的参与和支持最新的Servlet 和JSP 规范总是能在Tomcat 中得到体现Tomcat 5 支持最新的Servlet 2.4 和JSP 2.0 规范.因为Tomcat 技术先进.性能稳定而且免费因而深受Java 爱好者的喜爱并得到了部分软件开发商的认可成为目前比较流行