nginx简介(2)

Nginx作为Web服务器或者反向代理服务器

选择Nginx的理由
1. 它可以高并发连接 支撑5万并发连接,使用了最新的epoll网络I/O模型
2. 内存消耗少
3. 成本低廉
4. 其他理由
1)配置文件非常简单
2)支持Rewrite重写规则
3)内置的健康检查功能
4)节省带宽
5)稳定性高
6)支持热部署

Nginx在Linux下的安装

tar zxvf nginx-*.*.**.tar.gz
cd nginx-*.*.**
./configure
make
sudo make install

Nginx的配置文件
/usr/local/nginx/conf/nginx.conf

检查配置文件是否正确

/usr/local/nginx/sbin/nginx -t

Nginx的启动

/usr/local/nginx/sbin/nginx -c /usr/local/nginx/conf/nginx.conf
Nginx的停止
pkill -9 nginx

查看Nginx的进程号

ps -ef | grep nginx

配置开机自动启动
vim /etc/rc.local
/usr/local/nginx/sbin/nginx


虚拟主机

虚拟主机使用的是特殊的软硬件技术,它把一台运行的因特网上的服务器主机分成一台台的”虚拟“的主机,每台虚拟主机都可以是一个独立的网站,可以具有独立的域名,具有完整的Internet服务器功能(WWW、FTP、Email等),同一台主机上的虚拟主机之间是完全独立的。从网站访问者来看,每一台虚拟主机和一台独立的主机完全一样。
利用虚拟主机,不用为每个要运行的网站提供一台独立的Nginx服务器或单独运行一组Nginx进程。虚拟主机提供了在同一台服务器、同一组Nginx进程上运行多个网站的功能。
Nginx也可以配置多种类型的虚拟主机:一是基于IP的虚拟主机,二是基于域名的虚拟主机,三是基于端口的虚拟主机。


负载均衡
负载均衡是由多台服务器以对称的方式组成一个服务器集合,每台服务器都具有等价的地位,都可以单独对外提供服务而无需其他服务器的辅助。通过某种负载分担技术,将外部发送来的请求均匀分配到对称结构中的某一台服务器上,而接受到请求的服务器独立地回应客户的请求。均衡负载能够平均分配客户请求到服务器阵列,藉此快速获取重要数据,解决大量并发访问服务问题。这种集群技术可以用最少的投资获得接近于大型主机的性能。

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


常见的Web负载均衡方法
1. 用户手动选择方式
这是一种较为古老的方式,通过在主站首页入口提供不同线路、不同服务器链接的方式,来实现负载均衡。这种方式在一些提供下载业务的网站中比较常见,例如:华军软件园。
2. DNS轮询方式
大多域名注册商都支持对同一主机名添加多条A记录,这就是DNS轮询,DNS服务器将解析请求按照A记录的顺序,随机分配到不同的IP上,这样就完成了简单的负载均衡。
DNS轮询的成本非常低,在一些不重要的服务商,被经常使用。
虽然DNS轮询成本低廉,但是,DNS负载均衡存在两个明显的缺点
1)可靠性低。
2)负载分配不均衡。
3. 四/七层负载均衡设备
由于DNS轮询的缺点,一些对可靠性要求较高的服务器集群,则通过采用四/七层负载均衡设备来实现服务器的负载均衡。
现代负载均衡技术通常操作与OSI网络模型的第四层或第七层。第四层负载均衡将一个Internet上合法注册的IP地址映射为多个内部服务器的IP地址,对每个TCP连接请求动态使用其中一个内部IP地址,达到负载均衡的目的。在第四层交换机中,此种均衡技术得到广泛的应用,一个目标地址是服务器群VIP(虚拟IP,Virtual IP address)连接请求的数据包流经交换机。交换机根据源端和目的IP地址、TCP或UDP端口号和一定的负载均衡策略,在服务器IP和VIP间进行映射,选取服务器群中最好的服务器来处理连接请求。
第七层负载均衡控制应用层服务的内容,提供了一种对访问流量的高层控制方式,适合对HTTP服务器群的应用。第七层负载均衡技术通过检查流经的HTTP报头,根据报头内的信息来执行负载均衡任务。
常见的四/七层负载均衡均衡设备
1)硬件四/七层负载均衡交换机:F5 BIG-IP、Citrix NetScaler、Radware、Cisco CSS、Foundry等产品,这些产品价格不菲,高达几十万元人民币。
2)软件四层负载均衡
软件四层负载均衡的代表作品为LVS(Linux Virtual Server)。
3)软件七层负载均衡
软件的七层负载均衡大多基于HTTP反向代理方式,代表产品有Nginx、L7SW(Layer7 switching)、HAProxy等。
4)多线多地区智能DNS解析与混合负载均衡方式
以新浪首页(www.sina.com.cn)为例,负载均衡同时用到了“多线多地区智能DNS解析、DNS轮询、四/七层负载均衡交换机”等技术。智能DNS解析能够根据用户本地设置的DSN服务器线路和地区,将对同一个域名请求解析到不同的IP上。


OSI七层协议
1)物理层
物理层包括物理联网媒介,实际上就布线、光纤、网卡和其他用来把两台网络通讯设备连接在一起的设施。它规定了激活、维持、关闭通讯端点之间的机械特征、电气特征、功能特性及过程特性。虽然物理层不提供纠错服务,但它能够设定数据传输速率并检测数据出错率。

2)数据链路层
数据链路层的主要作用是控制网络层与物理层之间的通讯。它保证了数据在不可靠物理线路上进行可靠的传递。它把从网络层接收到的数据分割成特定的可被物理层传输的帧,保证了传输的可靠性。它的主要作用包括:物理地址寻址、数据的成帧、流量控制、数据的检错、重发等。它是独立于网络层和物理层的,工作时无需关心计算机是否正在运行软件还是其他操作。
数据链路层协议的主要内容包括:SDLC、HDLC、PPP、STP、帧中继等。

3)网络层
很多用户经常混淆第二层和第三层的界限,简单来说,如果你在讨论一个与IP地址、路由协议或地址解析协议(ARP)相关的问题,那么这就是第三层的问题。
网络层负责对子网间的数据包进行路由选择,它通过综合考虑发送优先权、网络拥塞程度、服务质量及可选路由的花费来决定一个网络中两个节点的最佳路径。另外,它还可以实现拥塞控制、网际互联等功能。
网络层协议的主要内容包括:IP、IPX、RIP、OSPF等

4传输层
传输层是OSI模型中最重要的一层,它是两台计算机经过网络进行数据通讯时,第一个端到端的层次,起到缓冲作用。当网络层的服务质量不能满足要求时,它将提高服务,以满足高层的要求;而当网络层服务质量较好时,它只须进行很少的工作。另外,它还要处理端到端的差错控制和流量控制等问题,最终为会话提供可靠的、无误的数据传输。
传输层协议的主要内容包括:TCP、UDP、SPX等。
在IP协议栈中第四层是TCP(传输控制协议)和UPD(用户数据报协议)所在的协议层。TCP和UDP包含端口号。它可以唯一区分每个数据包包含哪些应用协议(例如HTTP、FTP、telnet等)。TCP/UDP端口号提供的附加信息可以为网络交换机所利用,四层交换机利用这种信息来区分包中的数据,这是第四层交换的基础。

5会话层
会话层负责在网络中的两节点之间建立和维持通讯,并保持会话同步,他还决定通讯是否中断,以及通讯中断时决定从何处重行发送。

6表示层
表示层的作用是管理数据的解密与加密,如常见的系统口令处理,当你的账号数据在发送前被加密,在网络的另一端,表示层将对接收到的数据解密。另外,表示层还要对图片和文件格式信息进行解码和编码。

7应用层
简单来说,应用层就是为操作系统或网络应用程序提供访问网络服务的接口,包括文件传输、文件管理及电子邮件等的信息处理。
应用层协议的代表包括:Telnet、FTP、HTTP、SNMP等。


Nginx负载均衡服务器的双机高可用
双机高可用一般是通过虚拟IP(也成偏移IP)方式来实现的,基于Linux/Unix的IP别名技术。双机高可用方式目前可分为两种:第一种方式为一台主服务器加一台热备服务器,正常情况下主服务器绑定一个公网虚拟IP,提供负载均衡服务,热备服务器处于空闲状态,当主服务器发生故障时,热备服务器接管主服务器的虚拟IP,提供负载均衡服务;第二种方式为两台负载均衡服务器都处于活动能够状态,各自绑定一个公网虚拟IP,提供负载均衡服务,当其中一台服务器发生故障时,另一台服务器接管发生故障服务器的虚拟IP。第一种方式较为常见,但始终有一台服务器出于空闲状态,浪费了一台服务器的负载均衡处理能力。第二种方式需要多用一个公网IP。

Nginx模块
Ngnix所有的模块都要预先编译进Nginx的二进制可执行文件中。
Nginx模块有三种角色
1)Handlers(处理模块)—用于处理HTTP请求并输出内容
2)Filters(过滤模块)—用于过滤Handler输出的内容
3)Load-balancers(负载均衡模块)—当有多于一台的后端服务器供选择时,选择一台后端服务器并将HTTP请求转发到该服务器上。
Nginx模块的处理流程
客户端发送HTTP请求到Nginx服务器->Nginx基于配置文件中的文字选择一个合适的处理模块->负载均衡模块选择一台后端服务器(反向代理情况下)->处理模块进行处理并把输出缓冲放到第一个过滤模块上->第一个过滤模块处理后输出到第二个过滤模块->然后第二个过滤模块又到第三个过滤模块->第N个过滤模块->最后把处理结果发送给客户端。

Web缓存
Web缓存位于内容源Web服务器和客户端之间,当用户访问一个URL时,Web缓存服务器会去后端Web源服务器取回要输出的内容,然后,当下一个请求到来时,如果访问的是相同的URL,Web缓存服务器直接输出内容到客户端,而不是源服务器再次发送请求。Web缓存降低了内容源Web服务器、数据库的负载,减少了网络延迟,提高了用户访问的响应速度,增强了用户体验。
Web缓存服务器中,最最著名的要数Squid Cache(简称为Squid),已经在大多数网站中使用。Squid是一个流行的自由软件(GNU通用公共许可证)的代理服务器和Web缓存服务器。Squid有广泛的用途,从作为网页服务器的前置cache服务器缓存相关请求来提高Web服务器的速度,到为一组人共享网络资源而缓存万维网、域名系统和其他网络搜索,到通过过滤流量帮助网络安全,到局域网通过代理上网。Squid主要设计用于在Unix一类系统运行。

转自:http://www.jiangjianan.com/?p=14


评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值