【php精品源码栏目提醒】:网学会员鉴于大家对php精品源码十分关注,论文会员在此为大家搜集整理了“【精品推荐】Nginx在校园网络中的应用研究 - 技术总结”一文,供大家参考学习
专 业 推 荐 ↓ 精 品 文 档 福建电脑2009年第7期福建电脑Nginx在校园网络中的应用研究吴翔毅华侨大学网络中心福建泉州362021【摘要】Nginx因为其稳定性、丰富的模块库、灵活的配置和低系统资源的消耗而闻名。
本文介绍了基于免费开源的Nginx在校园网络中部署高性能Web服务器实施Web安全防护访问受限资源充分利用双带宽资源实现网页缓存负载均衡防盗链等服务的一种高效廉价的解决方案。
【关键词】NginxWeb服务器反向代理负载均衡1、研究背景华侨大学从CERNET中国教育和科研计算机网申请到的IP地址有32C从CHINANET中国公用计算机互联网申请到了64个IP地址。
校园网通过CERNET和CHINANET接入了Internet。
在校园网上的应用主要有一卡通系统、数字化图书馆、办公自动化系统、学工系统、教务系统、电子邮件系统、综合信息门户等大部分应用服务器部署了CERNET的IP地址少部分应用服务器部署了CHINANET的IP地址。
随着网络应用的快速发展及用户数的快速增加解决以下几个问题可以使各个应用系统更快速、高效、平稳及安全的运转1.提高应用服务器的性能如提高网站的访问速度、并发连接数等。
2.提高重要应用系统的安全性如一卡通综合查询系统一卡通综合查询系统与一卡通核心业务系统存在网络连通关系一旦一卡通综合查询应用服务器被入侵将威胁到一卡通核心业务系统的数据安全。
3.让不在校内的教职工、学生能访问到只限于在校园网上才能访问的资源如图书馆的数字期刊及办公自动化系统等。
4.对某些应用系统实现CERNET用户通过CERNET线路访问其他用户通过CHINANET线路访问从而提高用户的访问速度。
基于Nginx高性能的HTTP和反向代理服务器配合于BindDNSView功能是解决以上几个问题的有效途径之一。
2、Nginx在校园网络中的应用Nginxenginex是一个高性能的HTTP和反向代理服务器也是一个IMAP/POP3/SMTP代理服务器。
Nginx是由IgorSysoev为俄罗斯访问量第二的Rambler.ru站点开发的它从2005年开始在该站点上运行。
Igor将源代码以类BSD许可证的形式发布。
Nginx已经因为它的稳定性、丰富的功能集、示例配置文件和低系统资源的消耗而闻名了1。
根据NetCraft调查报告显示截止到2009年3月份有将近四百万个网站使用了Nginx而到2009年4月份则有超过六百万个网站使用了Nginx发展非常迅速。
关于这两期调查报告的更详细信息请访问http://news.netcraft.com/archives/web_serv-er_survey.html。
2.1高性能Web服务器Nginx具有很多非常优越的特性在高连接并发的情况下Nginx是Apache服务器不错的替代品能够支持高达50000个并发连接数的响应安装简单配置文件简洁还能够支持perl语法Bugs非常少还能够不间断服务的情况下进行软件版本的升级2。
Nginx同时也可以作为7层负载均衡服务器来使用。
根据测试Nginx0.7.14
PHP5.2.6FastCGI可以承受3万以上的并发连接数相当于同等环境下Apache的10倍。
根据经验4GB内存的服务器Apacheprefork模式一般只能处理3000个并发连接因为它们将占用3GB以上的内存还得为系统预留1GB的内存。
而在同一台服务器上Nginx0.7.14
PHP5.2.8FastCGI服务器在3万并发连接下开启的10个Nginx进程消耗150M内存15M10150M开启的64个
php-cgi进程消耗1280M内存20M641280M加上系统自身消耗的内存总共消耗不到2GB内存。
如果服务器内存较小完全可以只开启25个
php-cgi进程这样
php-cgi消耗的总内存数才500M。
在3万并发连接下访问Nginx0.7.51
PHP5.2.8FastCGI服务器的
PHP程序仍然速度飞快3。
对于需要提高应用服务器性能的网站可以将原有的A-pachePHPMysql的系统架构升级成NginxPHPFastCGIMysql的架构并对网页文件、CSS、JS、XML等启动gzip压缩减少数据传输量提高访问速度。
2.2反向代理反向代理服务是指以代理服务器来接受internet上的连接请求然后将请求转发给内部网络上的服务器并将从服务器上得到的结果返回给internet上请求连接的客户端。
2.2.1防护Web服务器反向代理服务器可以作为Web服务器的替身从而提高Web服务器的安全。
通过应用反向代理技术构成的防火墙系统它对内部网络的保护能力要小于双层防火墙软件等于普通的单层防火墙软件然而其对Web服务器的保护却大于双层防火墙系统对位于非军事化区内的Web服务器进行保护。
由于其本身为单层系统因此比双层系统实现起来更方便是一种简单有效的方案4。
将需防护的web服务器的原域名或IP部署于反向代理服务器并将web服务器与反向代理服务器直连或通过访问策略限制其他用户对web服务器的访问。
这样对外界而言只能访问到反向代理服务器无法访问到要防护的web服务器且反向代理服务器没有保存需防护的Web服务器任何网页的真实数据所有的静态网页或者动态内容都保存在原服务器上。
因此对反向代理服务器的攻击并不会使得网页信息遭到破坏这样就增强了web服务器的安全性。
一个配置实例如下serverlisten80server_namewww.domain.comlocation/proxy_passhttp://192.168.0.100需防护的Web服务器最终IP2.2.2在高校图书馆中的应用鉴于电子资源的共享性和易传播性各高校图书馆纷纷购买或者自建了许多电子资源库给读者利用图书馆资源的方式带来了一次革命5。
受数字资源版权保护校内任何单位和个人均须在合法的版权规定范围内使用大多数高校将数字资源限制在校园网内使用。
在校外居住的教职工、学生如何夜大生、函授生等将不能使用公网环境进行合法访问给科研、教学和办公带来了极大的不便。
如何即不违反知识产权又能方便校外合法用户在目前的技术条件可以使用VPN虚拟网和代理服务器来实现。
但这种情况下VPN的使用需在用户端额外安装软件或插件还可能需103福建电脑福建电脑2009年第7期福建电脑要支出一笔昂贵的费用代理服务器的使用也需要在用户端相应的软件上进行相关设置对普通用户来讲操作相对比较复杂。
而采用反向代理服务器可以做到对用户透明配合于用户身份验证比如LDAP认证、RADIUS认证、基于MYSQL的用户认证等并建立完善的反向代理服务器管理制度防止用户对数字资源的滥用以免发生版权纠纷。
APACHE、SQUID、Nginx都可以构建反向代理服务器基于Nginx的高性能在这里我们利用Nginx部署了反向代理服务器使用htpasswd建立和更新存储用户名、密码的文本文件实现对HTTP用户的basic认证既提高了图书馆电子资源的利用率又方便了校外合法用户的有效使用。
身份认证方法配置如下location/auth_basicRestrictedauth_basic_user_fileconf/htpasswd其它仅限制在校园网内才能访问的资源也可以通过此方法实现授权访问却不需对原服务器及网络策略作任何调整。
2.2.3多出口网络中的应用由于CERNET对大部分国外站点的访问是按照流量收费的。
如果完全通过CERNET来对外访问则会因为流量巨大造成网络费用过高。
且CERNET与CHINANET等网络互联带宽有限及网络资源的分布不均很多高校校园网用户与CHINANET互相访问的速度非常慢。
基于费用、速度和资源利用情况的考虑我校在保留CER-NET线路出口的基础上也通过当地电信接入了CHINANET。
但是基于CERNET与CHINANET双方彼此不为对方的IP地址提供路由的原因所有校园网外的用户都只能通过CERNET线路访问我校部署了从CERNET申请的IP地址的服务器通过CHINANET线路访问我校部署了从CHINANET申请的IP地址的服务器。
这种情况下CHINANET上的用户想访问我校部署CERNETIP地址的服务器时仍然需要通过CERNET线路进行访问而CHINANET与CERNET相连的这条链路带宽有限且非常拥挤所以CHINANET用户在访问该教育网络资源时的网络速度仍然会很慢。
如图1所示。
图1图2通过部署双网卡Nginx反向代理服务器一个网卡分配CERNETIP地址另一网卡分配CHINANEIP地址配合于BindDNSView功能使用户对我校相关域名进行解析时CER-NET用户解析到CERNET的IP地址其他用户解析到CHI-NANET的IP地址。
如图2所示实现了CERNET的用户通过CERNET线路访问我校对外提供服务的应用服务器其他用户通过CHINANET的线路访问我校对外提供服务的应用服务器从而提高网络访问速度充分利用双带宽资源并保护了Web服务器群。
还可以把私有IP地址部署于内部WEB服务器群达到节省公网IP的目的。
如果该服务器成为瓶颈可部署双台或多台反向代理服务器。
2.2.4内容缓存及负载均衡Nginx反向代理服务器具有缓存功能当有公网用户申请浏览内部Web服务器时代理服务器首先检查用户请求是否存在缓冲区里如果已存在并且是最新的那么它就不到内部服务器上读取信息而是直接将缓冲区中的信息传送给浏览器节省了与后端Web服务器的通讯开销大大加快了访问速度同时也减轻了后端Web服务器的负但。
Nginx能通过内存缓存和传统的硬盘缓存进行工作在Rails的环境搭建中可以开启其自带的memcached模块使其访问速度最高提高400原理如图3所示这种分布式缓存方式也为我们提供一种良好的解决方法。
图36Nginx只负责从memcached中读取内容但不负责设置。
因此需要你的应用程序自行将相应的页面缓存设置到mem-cached中。
从Nginx0748开始Nginx算是一个真正意义上的Proxy-Cache了具有X-Accel-ExpiresExpiresCache-Control功能expires起到控制页面缓存的作用合理的配置expires可以减少很多服务器的请求。
由于目前现有网络的各个核心部分随着业务量的提高访问量和数据流量的快速增长其处理能力和计算强度也相应地增大使得单一的服务器设备根本无法承担。
在此情况下如果扔掉现有设备去做大量的硬件升级这样将造成现有资源的浪费而且如果再面临下一次业务量的提升时这又将导致再一次硬件升级的高额成本投入甚至性能再卓越的设备也不能满足当前业务量增长的需求。
负载均衡是建立在现有网络结构之上而提供的一种廉价、有效、透明的方法来扩展网络设备和服务器的带宽、增加吞吐量、加强网络数据处理能力、提高网络的灵活性和可用性。
利用Nginx负载均衡功能可以把大量的并发访问或数据流量分担到多台节点设备上分别处理以减少用户等待响应的时间。
Nginx分布式负载的设置是通过Upstream模块实现的并使用weightnum来配置权重。
一个配置实例如下upstreambackendserverbackend1examplecomweight5serverbackend2examplecom:8080serverunix:/tmp/backend3serverlocation/proxy_passhttp://backend3、结束语尽管所论述的Nginx在校园网络中的应用方案中如负载均衡技术并不都是最优的解决方案但由于不需要额外投入大量资金只需对免费、开源的Nginx进行优化配置即可达到基本的目的因此具有实用价值Nginx尚有很多实下转第134页104福建电脑福建电脑2009年第7期福建电脑上接第104页用的功能如防盗链、邮件代理、图片过滤、规则重写等。
目前在华侨大学校园网中正逐步部署Nginx服务器并达到了预期的效果。
参考文献1.NginxNginxChsEB/OLhttp://wiki.nginx.org/NginxChs2.NignxNginxChsWhyUseItEB/OLhttp://wiki.nginx.org/NginxCh-sWhyUseIt3.张宴Nginx0.7.xPHP5.2.6FastCGI搭建胜过Apache十倍的Web服务器J/OLPHPer200812:52-654.朱前线基于反向代理技术的Web服务器防护机制研究与实现J交通与计算机20055:99-1015.杨永健反向代理软件SQUID在高校图书馆中的应用J四川图书馆学报20073:59-626.igvita.comNginxandMemcacheda400boostDB/OLhttp://www.igvita.com/2008/02/11/nginx-and-memcached-a-400-boost/要依据插桩选择记录文件了要求不同的覆盖率测试会激活不同的插桩函数。
4动态测试结果存储和分析将测试结果进行存储和分析计算出本次程序运行时所得到的语句覆盖率和分支覆盖率。
程序运行后将运行的动态信息写到缓冲区中。
执行的相应的顺序块、分支和子程序设为1未执行的为0。
这样通过对动态测试信息的分析和计算就可以将缓冲区中的内容翻译成我们所需的动态测试所需的覆盖信息。
将上面测试后得到的结果放到TresultTbcovTccovTlcovToutput。
其中Tbcov表示语句覆盖率Tccov表示分支覆盖率Tlcov表示子程序覆盖率Toutput表示程序运行的结果。
期望值定义为AresultAbcovAccovAlcovAoutput。
其中Abcov表示期望达到的语句覆盖率Accov表示期望达到的分支覆盖率Alcov表示期望达到的子程序覆盖率Aoutput表示程序运行的期望结果。
3.2外部存储器访问记录51单片机本身没有内存管理单元NIIVIUmemorymanage-mentunit等硬件支持的内存管理同时因为片上资源紧张不可能提供内存管理的软件模拟。
因此内存的使用依赖程序员的经验和恰当的系统分析保证安全性。
系统对外部存储器的访问信息记录为开发人员进行内存使用诊断提供了方便。
51单片机对外部存储器的访问定制了指令MOVX因此在仿真器上对MOVX指令进行模拟的函数movx_xmem_c2s6p2.…的内部记录下该指令操作的片外RAM地址即可。
如有需要还可以记录每一个内存单元被访问的次数以及访存操作是读操作还是写操作等细节。
3.3时间性能分析系统提供程序运行期的时间使用细节开发人员可以根据程序段之间的时间分配情况确定程序是否有错误或者是否需要优化。
系统提供的时间分析结果为:模拟运行的时钟周期总数、每一个语句块总共执行的时钟周期数、每个块占用的时钟周期换算比例、直观的图表表示。
4.实验结果在实验中采用一个已投入使用的实用串口通信控制系统作为实验对象。
在该系统中提取出64个可独立运行的子过程模块根据覆盖测试的需要为每个模块设计出多个测试用例对其进行覆盖测试由于每个模块的逻辑复杂程度以及输入参数的个数不一样因此设计的每个模块的测试用例数为18个至52个不等。
对于每一个模块首先采用手工运行程序的方式计算出两种覆盖率指标再与本文实现的仿真测试平台上所得的两种覆盖率指标相比较从而验证本原型系统自动测试结果的正确性。
为该模块设计的其中一个测试用例为0、0、2、3、5在此测试用例下用手工运行程序的方式所推算得出的语句覆盖率和分支覆盖率指标分别为76.92和58.33在本文实现的测试平台上运行后其结果和手工运行结果一致如图二所示从而验证了本原型系统自动测试结果的正确性。
但单个测试用例仍没有达到覆盖测试的最低标准。
采用本文提出的融合多测试用例信息的方法对该模块做实验后得到的综合语句和分支覆盖率分别为94.08和79.17如图三所示。
该指标均达到了覆盖测试的最低标准。
图二覆盖测试结果图图三综合覆盖信息查看窗口图四为进行该实验时我们的仿真测试平台原型系统运行时的时间性能信息查看窗口界面图五为内存使用信息查看窗口界面:图四时间性能参看窗口图五内存信息查看窗口5结束语文中在基于汇编语言的流程图自动生成的基础上利用虚拟插桩的方法实现了系统的动态测试能够有效的计算出嵌入式软件测试系统的覆盖率同时给出了测试中的时间性能和内存使用情况基本上满足了国内基于汇编的嵌入式软件测试的要求。
对一步研究多语言的嵌入式软件测试平台具有一定的积极意义。
参考文献:1.郑人杰.计算机软件测试技术.清华大学出版社19902.X.WuJ.JennyLiD.Weiss.Coverage-basedTestingonEmbeddedSystemC.ProceedingsoftheSecondInternationalWorkshoponAutomationofSoftwareTest2007:7-16.3.刘利枚周鲜成石彪.嵌入式软件测试系统J.国外电子测量技术200827159-614.孙昌爱金茂忠.基于程序插装的动态测试技术实现.小型微型计算机系统2002125.王璞张臻鉴王玉玺.基于覆盖的软件测试技术在实时嵌入式软件中的应用研究.计算机工程与设计199806134
上一篇:
【精品】北大青鸟SSH实现增删改查
下一篇:
国家教育公平政策的思路、问题与对策