
基于Linuxnginx反向代理服务器的应用研究毕业论文.doc
42页基于Linux nginx 反向代理服务器的应用研究摘 要 随着Web 2.0时代的到来,Web服务器的访问者数量快速增加服务器的CPU、I/O处理能力很快成为企业业务增长的瓶颈,此时可以通过多台服务器提供网络服务解决问题反向代理服务器,提供一个既可以提高系统性能又可以解决后期的动态扩展的方案反向代理服务器是相对于正向代理服务器而言的,反向代理的对象是服务器集群通过反向代理服务器实现多台服务器协作提供不同的服务,但对于客户端表现为一台服务器本设计采用nginx实现,主要是利用nginx的高并发连接支持的特点,在中小型企业中是一个兼顾性能和成本的不错选择本文主要研究了在Linux平台下通过nginx的反向代理功能来实现负载均衡的方法通过在后端搭建多台Web服务器实现负载均衡,通过搭建MySQL数据库和FTP服务器实现动、静态和静态附件的分离 关键字 Nginx,反向代理,负载均衡ABSTRACTWith the arrival of the era of Web 2.0,the number of visitors of the Web server increases rapidly.Server CPU and I/O processing power soon becomes the bottleneck of enterprise business growth,now we can solve the problem through network services which offered by multiple servers.Reverse proxy server,providing a plan which can improve system performance and solve dynamic expansion for later.Reverse proxy server is relative to the proxy server,reverse proxy object is a server cluster.Through reverse proxy server realize multiple servers provides different services,but for client it acts as one server.This design uses the nginx to realize, mainly using its characteristic of high concurrent connections ,it is a good choice for small and medium-sized enterprises between performance and cost .This paper mainly studied in the method of using nginx reverse proxy function to achieve load balancing on Linux platform.Through building multiple Web servers backend realize load balancing,through constructing the MySQL database and FTP server realize static and dynamic and static attachment of separation. Key Words:Nginx Reverse proxy Load balancing目 录1 绪论 11.1 课题研究的背景 11.2 课题研究的意义 12 系统实现的原理 22.1 基于Web的分布式系统 22.2 Ubuntu Server 10.04.2 LTS 22.3 nginx 22.4 反向代理 32.5 Discuz! X 32.6 XAMPP 32.6.1 Apache 42.6.2 MySQL 42.6.3 phpMyAdmin 42.6.4 FileZilla 42.6.5 ApacheBench 43 系统的需求分析、可行性分析和总体设计 53.1 需求分析 53.2 可行性分析 53.2.1 技术实现可行性分析 63.2.2 经济可行性分析 63.3 系统总体设计 63.3.1 负载均衡系统的拓扑图 73.3.2 负载均衡系统的层次结构图 84 系统详细设计 94.1 nginx反向代理服务器设计部署 94.1.1 系统总体环境的说明 94.1.2 Ubuntu的安装和配置 94.1.3 nginx的编译安装、启动和关闭 104.2 Apache的设计部署 114.2.1 XAMPP的安装 114.2.2 Apache的启动和配置 124.3 MySQL的安装和配置 144.4 Discuz ! X的安装 184.5 nginx的详细配置 214.5.1 常规选项的设置 214.5.2 http模块配置 224.5.3 upstream子模块 234.5.4 server子模块 234.5.5 静态数据缓存的设计实现 244.6 远程FTP附件的安装和配置 254.6.1 安装FTP服务器 254.6.2 设置Discuz !X远程附件 285 测试 315.1 测试 315.1.1 压力测试 315.1.2 实时测试 34总 结 35参考文献 37答 谢 381 绪论1.1 课题研究的背景随着Web 2.0时代的到来,互联网上的信息已不再是企业或个人的商业行为,而是所有互联网的用户通过求知的力量彼此协作的产物,所有的用户既是信息的提供者又是信息的获取者。
信息的爆炸式的发展,使得互联网上的知识更加的丰富多彩,同时为所有用户节约了很多处理已有问题的时间并且社交类网站的兴起,促进了人们的交流,也充分说明了用户交互是未来网络发展的必然趋势但这种方式的出现给Web的服务器提供商提出了新的挑战出现了例如:如何能够应对高并发的访问量,如何能够实时的响应请求,如何能够有效的利用服务器资源等问题各大IT公司纷纷提供了自己的解决方案1.2 课题研究的意义随着网络用户的不断增加,Web服务器的负载压力越来越大,通过分布式服务器的模式可以实现Web服务分离,并且可以由多个服务器提供一项负载压力特别大的服务,从而解决压力过大的问题,而且这种模式的扩展性和灵活性很强,可以在以后随着业务的增加或减少进行可伸缩的改变同时,数据的安全性也得到了提高,通过双备份和高可用技术,可以实现数据的多重备份和实时替换,使得整个系统不会因为一台设备的故障而影响全局大大提高了系统的稳定性和安全性2 系统实现的原理2.1 基于Web的分布式系统 Web[1]的客户-服务器模式要解决的关键问题就是负载过大问题,Web分布式系统[2]可以解决这个问题一个比较实用的方法就是:把Web服务器复制成为一个Web服务器集群,使用一个统一的前端(如nginx)把客户端的请求均衡的分配给后端Web服务器集群。
2.2 Ubuntu Server 10.04.2 LTSUbuntu[3] 是基于Debian的Linux 发行版,该项目起始于2004年,它虽然很年轻,却在短短的几年间,变成了Linux发行版中用户量最多的一位Ubuntu 的运行和维护依赖于Mark Shuttleworth创建的Canonical公司,当然也离不开广大Linux爱好者的支持本论文采用的是Ubuntu Server 10.04.2 LTS版,其中10.04.2意思是首次发布于2010年4月的第二个维护版本,LTS表示将提供长达5年的安全和更新支持2.3 nginxnginx[4]是由俄罗斯人Igor Sysoev编写的一款高性能的反向代理和Web服务器软件在Linux(2.6内核)、FreeBSD和Solaris 10中分别可以使用epoll、kqueue和eventport作为网络I/O模型它具有高并发连接的特点,官方称其可以达到50000个,但是即便这样,它在CPU、内存占用方面却是非常的低,而且其稳定性也相当的好5月初nginx[5]发布了1.0.0版本,这意味着历时达9年之久的nginx开发已经正式迈入了新的阶段。
本次论文设计采用的是最新稳定版1.0.22.4 反向代理反向代理是相对于正向代理来说的正向代理就是PC机连接Internet时要通过代理服务器,PC机把Web请求发送给代理服务器,由代理服务器连接Internet而反向代理服务器则恰恰相反,反向代理服务器代理的对象是后端服务器,由前端代理服务器接受Internet请求,并将这些请求转发给后端服务器同时把后端服务器的结果返回给PC端对于外部网络来说,反向代理服务器和它代理的服务器表现为一个服务器2.5 Discuz! XDiscuz! X [6]是康盛公司(Comsenz)推出的一个以社区为基础的专业建站平台,让论坛(BBS)、社交网络(SNS)、门户(Portal)、群组(Group)、开放平台(Open Platform)应用充分融合于一体,帮助网站实现一站式服务本论文采用的是1.5 UTF-8版本这款产品本身是免费的,收费的是它的服务借鉴这种模式,它已经发展成为国内同类产品中的第一品牌2.6 XAMPPXAMPP是由Apache friends网站开发的,其中X表示其支持Linux、Windows、Mac OS X、Solaris等多种平台。
它提供了一个良好的开发环境,主要是用于网站开发者测试使用,但同样可以用于实际的生产环境,但要根据实际情况关闭不需要的功能模块,并进行相应的安全设置它默认包含了很多服务器组件,在本论文中的所有后端服务器均用此软件部署2.6.1 Apache Apache[7]服务器是一种开放源代码的HTTP服务器,支持多种操作系统平台,目前是最流行的WWW服务器软件之一它是相当优秀和经典的Web服务器,本次设计中需要开启对PHP的支持2.6.2 MySQL MySQL[7]是一个开源的小型关系型数据库软件,具有多平台支持和移植性强的特点,同时拥有良好的性能2.6.3 phpMyAdmin 用PHP开发的MySQL Web管理软件,几乎囊括了MySQL所有的功能实现使用十分方便,只要登录页面就可操作,即便没有接触过数据库的人也可是使用2.6.4 FileZilla FileZilla是一款优秀的FTP服务器,它性能优异、配置简单,而且功能相比于其他FTP服务器一点也不逊色2.6.5 ApacheBenchApacheBench是Apache服务器的一款执行效率测试软件可以针对一个URL模拟出连续的连接请求,通过在命令行中赋予不同的选项和值,可以仿真不同压力的访问请求,这样就可以根据其反馈结果和服务器端的表现来进行适当的配置调整。
3 系统的需求分析、可行性分析和总体设计3.1 需求分析本设计搭建的平台是Discuz! X,主要是为其提供运行的环境,并在各方面进行优化重点需要实现以下几个方面:反向代理和负载均衡:通过前端服务器代理后端服务器集群,实现负载的均衡分配静态数据缓存:在网络数据传输的过程中,网站的静态数据可以通过定期缓存到前端代理服。
