事件【大型网站技术实践】初级篇:借助Nginx搭建反向代理服务器

代理服务器网站  时间:2021-03-02  阅读:()

一、反向代理 Web服务器的“经纪人”

1. 1反向代理初印象

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

从上图可以看出反向代理服务器位于网站机房代理网站Web服务器接收Http请求对请求进行转发。

1.2反向代理的作用

①保护网站安全任何来自Internet的请求都必须先经过代理服务器

②通过配置缓存功能加速Web请求可以缓存真实Web服务器上的某些静态资源减轻真实Web服务器的负载压力

③实现负载均衡充当负载均衡服务器均衡地分发请求平衡集群中各个服务器的负载压力

二、初识Nginx简单却不平凡

2. 1 Nginx是神马

Nginx是一款轻量级的网页服务器、反向代理器以及电子邮件代理服务器。其将源代码以类BSD许可证的形式发布 因它的稳定性、丰富的功能集、示例配置文件和低系统资源的消耗而闻名。

Source Nginx 发音同engine x 它是由俄罗斯程序员Igor Sysoev所开发的。起初是供俄国大型的门户网站及搜索引擎Rambler 俄语Рамбл е р 使用。此软件BSD-like协议下发行可以在UNIX、 GNU/Linux、 BSD、 Mac OS X、 Solaris 以及Microsoft Windows等操作系统中运行。

说到Web服务器 Apache服务器和IIS服务器是两大巨头但是运行速度更快、更灵活的对手 Nginx?正在迎头赶上。

2.2 Nginx的应用现状

Nginx已经在俄罗斯最大的门户网站──?Rambl er Media www.rambler.ru上运行了3年时间 同时俄罗斯超过20%的虚拟主机平台采用Nginx作为反向代理服务器。

在国内已经有淘宝、新浪博客、新浪播客、网易新闻、六间房、 56.com、 Discuz! 、水木社区、豆瓣、 YUPOO、海内、迅雷在线等多家网站使用Nginx作为Web服务器或反向代理服务器。

2.3 Nginx的核心特点

1跨平台 Nginx可以在大多数Unix like OS编译运行而且也有Windows的移植版本

2配置异常简单非常容易上手。配置风格跟程序开发一样神一般的配置

3非阻塞、高并发连接数据复制时磁盘I/O的第一阶段是非阻塞的。官方测试能够支撑5万并发连接在实际生产环境中跑到23万并发连接数。 这得益于Nginx使用了最新的epoll模型 

PS对于一个Web服务器来说首先看一个请求的基本过程建立连接—接收数据—发送数据在系统底层看来上述过程建立连接—接收数据—发送数据在系统底层就是读写事件。

①如果采用阻塞调用的方式 当读写事件没有准备好时必然不能够进行读写事件那么久只好等待等事件准备好了才能进行读写事件那么请求就会被耽搁。

②既然没有准备好阻塞调用不行那么采用非阻塞调用方式。非阻塞就是事件马上返回告诉你事件还没准备好呢你慌什么过会再来吧。好吧你过一会再来检查一下事件直到事件准备好了为止在这期间你就可以先去做其它事情然后再来看看事件好了没。虽然不阻塞了但你得不时地过来检查一下事件的状态你可以做更多的事情了但带来的开销也是不小的。

4事件驱动通信机制采用epoll模型支持更大的并发连接。

①非阻塞通过不断检查事件的状态来判断是否进行读写操作这样带来的开销很大 因此就有了异步非阻塞的事件处理机制。这种机制让你可以同时监控多个事件调用他们是阻塞的但可以设置超时时间在超时时间之内如果有事件准备好了就返回。这种机制解决了上面阻塞调用与非阻塞调用的两个问题。

②以epoll模型为例 当事件没有准备好时就放入epoll (队列)里面。如果有事件准备好了那么就去处理如果事件返回的是EAGAIN那么继续将其放入epoll里面。从而只要有事件准备好了我们就去处理它只有当所有事件都没有准备好时才在epoll里面等着。这样我们就可以并发处理大量的并发了 当然这里的并发请求是指未处理完的请求线程只有一个所以同时能处理的请求当然只有一个了只是在请求间进行不断地切换而已切换也是因为异步事件未准备好而主动让出的。这里的切换是没有任何代价你可以理解为循环处理多个准备好的事件事实上就是这样的。

③与多线程方式相比这种事件处理方式是有很大的优势的不需要创建线程每个请求占用的内存也很少没有上下文切换事件处理非常的轻量级并发数再多也不会导致无谓的资源浪费上下文切换 。对于IIS服务器每个请求会独占一个工作线程 当并发数上到几千时就同时有几千的线程在处理请求了。这对操作系统来说是个不小的挑战 因为线程带来的内存占用非常大线程的上下文切换带来的cpu开销很大 自然性能就上不去从而导致在高并发场景下性能下降严重。

总结通过异步非阻塞的事件处理机制Ngi nx实现由进程循环处理多个准备好的事件从而实现高并发和轻量级。 ?

5 Master/Worker结构一个master进程生成一个或多个worker进程。

PS Master-Worker设计模式核心思想是将原来串行的逻辑并行化并将逻辑拆分成很多独立模块并行执行。其中主要包含两个主要组件Master和Worker Master主要将逻辑进行拆分拆分为互相独立的部分 同时维护了Worker队列将每个独立部分下发到多个Worker并行执行 Worker主要进行实际逻辑计算并将结果返回给Master。

问 nginx采用这种进程模型有什么好处

答采用独立的进程可以让互相之间不会影响一个进程退出后其它进程还在工作服务不会中断 Master进程则很快重新启动新的Worker进程。当然 Worker进程的异常退出肯定是程序有bug了异常退出会导致当前Worker上的所有请求失败不过不会影响到所有请求所以降低了风险。

6 内存消耗小处理大并发的请求内存消耗非常小。在3万并发连接下开启的10个Nginx进程才消耗150M内存15M*10=150M 。7 内置的健康检查功能如果Nginx代理的后端的某台Web服务器宕机了不会影响前端访问。

8节省带宽支持GZIP压缩可以添加浏览器本地缓存的Header头。

9稳定性高用于反向代理宕机的概率微乎其微。

三、构建实战 Nginx+IIS构筑Web服务器集群的负载均衡

这里我们主要在Windows环境下通过将同一个Web网站部署到不同服务器的IIS上再通过一个统一的Nginx反响代理服务器对外提供统一访问接入实现一个最简化的反向代理和负载均衡服务。但是受限于实验条件我们这里主要在一台计算机上进行反向代理、 IIS集群的模拟具体的实验环境如下图所示我们将nginx服务和web网站都部署在一台计算机上 nginx监听http80端口而web网站分别以不同的端口号这里是8050及8060部署在同一个IIS服务器上用户访问localhost时 nginx作为反向代理将请求均衡地转发给两个IIS中不同端口的Web应用程序进行处理。虽然实验环境很简单而且有限但是对于一个简单的负载均衡效果而言本文是可以达到并且展示的。

3. 1准备一个ASP.NET网站部署到IIS服务器集群中

1在VS中新建一个ASP.NET Web应用程序但是为了在一台计算机上展示效果我们将这个Web程序复制一份并修改两个Web程序的Default.aspx让其的首页显示不同的一点信息。这里Web1展示的是“The First Web ” 而Web2展示的则是“The Second Web” 。

2调试运行看看两个网站的效果如何

①Web1的展示效果

②Web2的展示效果

③部署到IIS中分配不同的端口号这里我选择了Web1 :8050 Web2:8060

3总结在真实环境中构建Web应用服务器集群的实现是将同一个Web应用程序部署到Web服务器集群中的多个Web服务器上。

3.2下载Nginx并部署到服务器中作为自启动的Windows服务

1到Nginx官网下载Nginx的Windows版本 http://nginx.org/en/download.html 这里我们使用nginx/Windows-1.4.7版本进行实验本文底部有下载地址

2解压到磁盘任意目录例如这里我解压到了 D:\Servers\nginx-1.4. 7

3启动、停止和重新加载服务通过cmd以守护进程方式启动nginx.exe start nginx.exe停止服务 nginx -s stop重新加载配置 nginx-s? reload

4每次以cmd方式启动Nginx服务不符合实际要求于是我们想到将其注册为Windows服务并设置为自动启动模式。这里我们使用一个不错的小程序 “Windows Service Wrapper” 将nginx.exe注册为Windows服务具体的步凑如下

①下载最新版的Windows Service Wrapper程序 比如我下载的名称是 “winsw-1.8-bin. exe” 本文底部有下载地址 然后把它命名成你想要的名字比如: “nginx-service.exe”  当然你也可以不改名

②将重命名后的nginx-service.exe?复制到nginx的安装目录比如我这里是 “D:\Servers\nginx-1.4.7″ 

③在同一个目录下创建一个Windows Service Wrapper的XML配置文件名称必须与第一步重命名时使用的名称一致比如我这里是“nginx-service.xml” , ?如果你没有重命名则应该是 “winsw-1.8-bin.xml”  这个XML的内容如下

1 <?xml version="1.0"encoding="UTF-8" ?>

2 <service>

3 <id>nginx</id>

4 <name>Nginx Service</name>

5 <description>High Performance Nginx Service</description>

6 <executable>D:\Servers\nginx-1.4.7\nginx.exe</executable>

7 < logpath>D:\Servers\nginx-1.4.7\</logpath>

8 < logmode>rol l</logmode>

9 <depend></depend>

10<startargument>-p D:\Servers\nginx-1.4.7</startargument>

11<stopargument>-p D:\Servers\nginx-1.4.7-s stop</stopargument>

12</service>

④在命令行下执行以下命令 以便将其注册成Windows服务 nginx-service. exe install

⑤接下来就可以在Windows服务列表看到Nginx服务了这里我们可以将其设置为自动启动了

5总结在Windows环境中要对外提供的Windows服务一般都要将其启动类型设置为自动。

3.3修改Nginx核心配置文件nginx.conf

totyun:香港cn2 vps,5折优惠,$6/月,10Mbps带宽,不限流量,2G内存/2核/20g+50g

totyun,新公司,主要运作香港vps、日本vps业务,接入cn2网络,不限制流量!VPS基于KVM虚拟,采用系统盘和数据盘分离,从4G内存开始支持Windows系统...大家注意下,网络分“Premium China”、“Global”,由于站长尚未测试,所以也还不清楚情况,有喜欢吃螃蟹的尝试过不妨告诉下站长。官方网站:https://totyun.com一次性5折优惠码:X4QTYVNB3P...

DiyVM:香港VPS五折月付50元起,2核/2G内存/50G硬盘/2M带宽/CN2线路

diyvm怎么样?diyvm这是一家低调国人VPS主机商,成立于2009年,提供的产品包括VPS主机和独立服务器租用等,数据中心包括香港沙田、美国洛杉矶、日本大阪等,VPS主机基于XEN架构,均为国内直连线路,主机支持异地备份与自定义镜像,可提供内网IP。最近,DiyVM商家对香港机房VPS提供5折优惠码,最低2GB内存起优惠后仅需50元/月。点击进入:diyvm官方网站地址DiyVM香港机房CN...

DMIT$10.9/月,日本VPS/三网直连/1核1.5G内存/20GB存储/1Gbps端口

优惠码年付一次性5折优惠码:TYO-Lite-Open-Beta-1y-50OFF永久8折优惠码:TYO-Lite-Open-Beta-Recur-20OFF日本vpsCPU内存SSD流量带宽价格购买1核1.5G20 GB4 TB1Gbps$10.9/月购买2核2 G40 GB6 TB1Gbps$16.9/月购买2核4 G60 GB8 TB1Gbps$21.9/月购买4核4 G80 GB12 TB...

代理服务器网站为你推荐
万维读者网用QQ邮箱向《读者》投稿具体格式绵阳电信绵阳电信营业厅哪家最大手机最全深圳公交车路线深圳公交车路线查询个性qq资料QQ个性资料雅虎天盾有没有用用雅虎天盾的啊?怎么升级ios6苹果iPhone6怎么升级系统安装迅雷看看播放器迅雷看看播放器下了安装不了2012年正月十五农历2012年正月15早上9点多生的!命里缺什么!是什么命相网站优化方案几种常用的网站优化方法怎么上传音乐如何将电脑上的音乐传到MP3上
传奇服务器租用 cn域名个人注册 locvps 美国主机评论 42u机柜尺寸 天猫双十一秒杀 php探针 本网站服务器在美国 php空间申请 七夕促销 最好的qq空间 息壤代理 免费dns解析 上海电信测速 smtp服务器地址 国外的代理服务器 万网空间 ledlamp cdn服务 移动王卡 更多