基于Linuxnginx反向代理服务器的应用研究毕业论文.docx
- 文档编号:8459631
- 上传时间:2023-01-31
- 格式:DOCX
- 页数:38
- 大小:1.67MB
基于Linuxnginx反向代理服务器的应用研究毕业论文.docx
《基于Linuxnginx反向代理服务器的应用研究毕业论文.docx》由会员分享,可在线阅读,更多相关《基于Linuxnginx反向代理服务器的应用研究毕业论文.docx(38页珍藏版)》请在冰豆网上搜索。
基于Linuxnginx反向代理服务器的应用研究毕业论文
基于Linuxnginx反向代理服务器的应用研究
摘要随着Web2.0时代的到来,Web服务器的访问者数量快速增加。
服务器的CPU、I/O处理能力很快成为企业业务增长的瓶颈,此时可以通过多台服务器提供网络服务解决问题。
反向代理服务器,提供一个既可以提高系统性能又可以解决后期的动态扩展的方案。
反向代理服务器是相对于正向代理服务器而言的,反向代理的对象是服务器集群。
通过反向代理服务器实现多台服务器协作提供不同的服务,但对于客户端表现为一台服务器。
本设计采用nginx实现,主要是利用nginx的高并发连接支持的特点,在中小型企业中是一个兼顾性能和成本的不错选择。
本文主要研究了在Linux平台下通过nginx的反向代理功能来实现负载均衡的方法。
通过在后端搭建多台Web服务器实现负载均衡,通过搭建MySQL数据库和FTP服务器实现动、静态和静态附件的分离。
关键字Nginx,反向代理,负载均衡
ABSTRACT
WiththearrivaloftheeraofWeb2.0,thenumberofvisitorsoftheWebserverincreasesrapidly.ServerCPUandI/Oprocessingpowersoonbecomesthebottleneckofenterprisebusinessgrowth,nowwecansolvetheproblemthroughnetworkserviceswhichofferedbymultipleservers.
Reverseproxyserver,providingaplanwhichcanimprovesystemperformanceandsolvedynamicexpansionforlater.Reverseproxyserverisrelativetotheproxyserver,reverseproxyobjectisaservercluster.Throughreverseproxyserverrealizemultipleserversprovidesdifferentservices,butforclientitactsasoneserver.Thisdesignusesthenginxtorealize,mainlyusingitscharacteristicofhighconcurrentconnections,itisagoodchoiceforsmallandmedium-sizedenterprisesbetweenperformanceandcost.
ThispapermainlystudiedinthemethodofusingnginxreverseproxyfunctiontoachieveloadbalancingonLinuxplatform.ThroughbuildingmultipleWebserversbackendrealizeloadbalancing,throughconstructingtheMySQLdatabaseandFTPserverrealizestaticanddynamicandstaticattachmentofseparation.
KeyWords:
NginxReverseproxyLoadbalancing
目录
1绪论1
1.1课题研究的背景1
1.2课题研究的意义1
2系统实现的原理2
2.1基于Web的分布式系统2
2.2UbuntuServer10.04.2LTS2
2.3nginx2
2.4反向代理3
2.5Discuz!
X3
2.6XAMPP3
2.6.1Apache4
2.6.2MySQL4
2.6.3phpMyAdmin4
2.6.4FileZilla4
2.6.5ApacheBench4
3系统的需求分析、可行性分析和总体设计5
3.1需求分析5
3.2可行性分析5
3.2.1技术实现可行性分析6
3.2.2经济可行性分析6
3.3系统总体设计6
3.3.1负载均衡系统的拓扑图7
3.3.2负载均衡系统的层次结构图8
4系统详细设计9
4.1nginx反向代理服务器设计部署9
4.1.1系统总体环境的说明9
4.1.2Ubuntu的安装和配置9
4.1.3nginx的编译安装、启动和关闭10
4.2Apache的设计部署11
4.2.1XAMPP的安装11
4.2.2Apache的启动和配置12
4.3MySQL的安装和配置14
4.4Discuz!
X的安装18
4.5nginx的详细配置21
4.5.1常规选项的设置21
4.5.2http模块配置22
4.5.3upstream子模块23
4.5.4server子模块23
4.5.5静态数据缓存的设计实现24
4.6远程FTP附件的安装和配置25
4.6.1安装FTP服务器25
4.6.2设置Discuz!
X远程附件28
5测试31
5.1测试31
5.1.1压力测试31
5.1.2实时测试34
总结35
参考文献37
答谢38
绪论
课题研究的背景
随着Web2.0时代的到来,互联网上的信息已不再是企业或个人的商业行为,而是所有互联网的用户通过求知的力量彼此协作的产物,所有的用户既是信息的提供者又是信息的获取者。
信息的爆炸式的发展,使得互联网上的知识更加的丰富多彩,同时为所有用户节约了很多处理已有问题的时间。
并且社交类网站的兴起,促进了人们的交流,也充分说明了用户交互是未来网络发展的必然趋势。
但这种方式的出现给Web的服务器提供商提出了新的挑战。
出现了例如:
如何能够应对高并发的访问量,如何能够实时的响应请求,如何能够有效的利用服务器资源等问题。
各大IT公司纷纷提供了自己的解决方案。
课题研究的意义
随着网络用户的不断增加,Web服务器的负载压力越来越大,通过分布式服务器的模式可以实现Web服务分离,并且可以由多个服务器提供一项负载压力特别大的服务,从而解决压力过大的问题,而且这种模式的扩展性和灵活性很强,可以在以后随着业务的增加或减少进行可伸缩的改变。
同时,数据的安全性也得到了提高,通过双备份和高可用技术,可以实现数据的多重备份和实时替换,使得整个系统不会因为一台设备的故障而影响全局。
大大提高了系统的稳定性和安全性。
2系统实现的原理
2.1基于Web的分布式系统
Web[1]的客户-服务器模式要解决的关键问题就是负载过大问题,Web分布式系统[2]可以解决这个问题。
一个比较实用的方法就是:
把Web服务器复制成为一个Web服务器集群,使用一个统一的前端(如nginx)把客户端的请求均衡的分配给后端Web服务器集群。
2.2UbuntuServer10.04.2LTS
Ubuntu[3]是基于Debian的Linux发行版,该项目起始于2004年,它虽然很年轻,却在短短的几年间,变成了Linux发行版中用户量最多的一位。
Ubuntu的运行和维护依赖于MarkShuttleworth创建的Canonical公司,当然也离不开广大Linux爱好者的支持。
本论文采用的是UbuntuServer10.04.2LTS版,其中10.04.2意思是首次发布于2010年4月的第二个维护版本,LTS表示将提供长达5年的安全和更新支持。
2.3nginx
nginx[4]是由俄罗斯人IgorSysoev编写的一款高性能的反向代理和Web服务器软件。
在Linux(2.6内核)、FreeBSD和Solaris10中分别可以使用epoll、kqueue和eventport作为网络I/O模型。
它具有高并发连接的特点,官方称其可以达到50000个,但是即便这样,它在CPU、内存占用方面却是非常的低,而且其稳定性也相当的好。
5月初nginx[5]发布了1.0.0版本,这意味着历时达9年之久的nginx开发已经正式迈入了新的阶段。
本次论文设计采用的是最新稳定版1.0.2。
2.4反向代理
反向代理是相对于正向代理来说的。
正向代理就是PC机连接Internet时要通过代理服务器,PC机把Web请求发送给代理服务器,由代理服务器连接Internet。
而反向代理服务器则恰恰相反,反向代理服务器代理的对象是后端服务器,由前端代理服务器接受Internet请求,并将这些请求转发给后端服务器。
同时把后端服务器的结果返回给PC端。
对于外部网络来说,反向代理服务器和它代理的服务器表现为一个服务器。
2.5Discuz!
X
Discuz!
X[6]是康盛公司(Comsenz)推出的一个以社区为基础的专业建站平台,让论坛(BBS)、社交网络(SNS)、门户(Portal)、群组(Group)、开放平台(OpenPlatform)应用充分融合于一体,帮助网站实现一站式服务。
本论文采用的是1.5UTF-8版本。
这款产品本身是免费的,收费的是它的服务。
借鉴这种模式,它已经发展成为国内同类产品中的第一品牌。
2.6XAMPP
XAMPP是由Apachefriends网站开发的,其中X表示其支持Linux、Windows、MacOSX、Solaris等多种平台。
它提供了一个良好的开发环境,主要是用于网站开发者测试使用,但同样可以用于实际的生产环境,但要根据实际情况关闭不需要的功能模块,并进行相应的安全设置。
它默认包含了很多服务器组件,在本论文中的所有后端服务器均用此软件部署。
2.6.1Apache
Apache[7]服务器是一种开放源代码的HTTP服务器,支持多种操作系统平台,目前是最流行的WWW服务器软件之一。
它是相当优秀和经典的Web服务器,本次设计中需要开启对PHP的支持。
2.6.2MySQL
MySQL[7]是一个开源的小型关系型数据库软件,具有多平台支持和移植性强的特点,同时拥有良好的性能。
2.6.3phpMyAdmin
用PHP开发的MySQLWeb管理软件,几乎囊括了MySQL所有的功能实现。
使用十分方便,只要登录页面就可操作,即便没有接触过数据库的人也可是使用。
2.6.4FileZilla
FileZilla是一款优秀的FTP服务器,它性能优异、配置简单,而且功能相比于其他FTP服务器一点也不逊色。
2.6.5ApacheBench
ApacheBench是Apache服务器的一款执行效率测试软件。
可以针对一个URL模拟出连续的连接请求,通过在命令行中赋予不同的选项和值,可以仿真不同压力的访问请求,这样就可以根据其反馈结果和服务器端的表现来进行适当的配置调整。
3系统的需求分析、可行性分析和总体设计
3.1需求分析
本设计搭建的平台是Discuz!
X,主要是为其提供运行的环境,并在各方面进行优化。
重点需要实现以下几个方面:
反向代理和负载均衡:
通过前端服务器代理后端服务器集群,实现负载的均衡分配。
静态数据缓存:
在网络数据传输的过程中,网站的静态数据可以通过定期缓存到前端代理服务器的方式大大的减少前端服务器与后端服务器的数据通信流量。
会话保持:
用户输入自己的账户和密码后登陆,其实是定位到了服务器集群中的某一台。
如果用户刷新,遵照负载均衡的轮询规则,用户就被指引到了另外一台服务器,需要重新登陆。
这样不仅用户麻烦,而且会无形中加大服务器的负担,所以要把一个用户定位到一个服务器上不变。
Web和数据库的分离:
随着数据的增加,需要把数据库和Web分离出来,由独立的一台服务器提供数据库服务,从而提高整个集群系统的性能。
Web和静态附件的分离:
由于静态附件的体积较大和文件繁多,使得附件的传输和管理成为Web服务器高速运行的瓶颈。
如果把静态附件分离出来,不仅可以大大减轻Web压力,还能提高附件上行和下行的效率。
3.2可行性分析
针对需求分析,进行以下可行性分析。
3.2.1技术实现可行性分析
通过nginx的http模块的反向代理和负载均衡功能解决相应的问题,启用ip_hash实现会话保持。
对于静态数据缓存可在nginx的server模块中加入相应的缓存设置。
通过分别部署Discuz!
XWeb服务器,并设置其连接远程数据库服务器实现Web和数据库分离。
通过启用Discuz!
X的远程附件功能,并搭建FTP服务器实现静态附件分离。
3.2.2经济可行性分析
本论文设计全部采用开放源代码的免费软件,不仅节约了成本,而且可以很好的利用开源软件的二次开发特性,在实际生产部署中,可以根据需要加入自己编写的功能模块。
3.3系统总体设计
总体设计主要从网络拓扑图、层次结构图两个方面来介绍。
3.3.1负载均衡系统的拓扑图
图1拓扑图
如图1所示,服务器集群系统分为3台Web服务器,1台FTP服务器,1台数据库服务器和它们的nginx前端反向代理服务器。
测试机使用3台,是为了具体实施时进行实时性测试。
其中3台Web是负载均衡实现的主要对象,也是Discuz!
X网站部署的服务器。
采用2台交换机是为了把集群系统和测试机物理上分开,使两个网络的数据通信集中在两个交换机的连接线上,仿真不同网络的访问(在详细设计中会提到)。
3.3.2负载均衡系统的层次结构图
nginx
图2层次结构图
图2为整个系统的层次结构图[2]。
用户发送请求经过了三个层次结构,反向代理层会根据用户的请求以轮询的形式把请求转发给Web应用层,Web应用层再根据请求的具体内容去访问文件层和数据层。
4系统详细设计
4.1nginx反向代理服务器设计部署
4.1.1系统总体环境的说明
广域网模拟的必要性:
要模拟广域网环境就需要加入DNS服务和路由器,来实现在不同网络之间的互联和模拟域名的解析。
但是其实还是没能真实的体现广域网多网络和众多用户的特点,所以没有采用上述方法模拟广域网环境。
在本系统中,nginx要求主机有一个域名,所以在测试客户端的系统hosts文件中加入如下代码,实现域名解析。
192.168.56.100www.discuz.cc
该系统中所有的计算机全部采用相同配置的联想台式机。
大体配置如下:
CPU:
IntelPentium(R)Dual-CoreE53002.60GHz
内存:
2GB硬盘:
250GB
操作系统平台:
除了反向代理服务器采用Ubuntu10.04.2LTS外,其他的一律为WindowsXpProfessionalSP2。
4.1.2Ubuntu的安装和配置
Ubuntu的安装过程和其他Linux发行版的安装过程差不多,甚至还要更简单。
文件系统采用最经典的分法:
根文件系统/,swap交换区(1.5倍于内存大小)。
安装完成后,配置/etc/apt/sources.list软件源,以备下一步安装库文件。
静态ip的配置/etc/network/interfaces,屏蔽#ifaceeth0inetdhcp,添加
address192.168.56.100
netmask255.255.255.0
gateway192.168.56.1
4.1.3nginx的编译安装、启动和关闭
5月初nginx[4]发布了1.0.0版本,这意味着nginx已经正式迈入了新的阶段,此间历时达9年之久,本次编译采用最新稳定版1.0.2,从官方下载源代码nginx-1.0.2.tar.gz。
编译安装过程如下:
//更新到最新的软件列表文件
#apt-getupdate
//创建nginx专用组和用户
#groupaddwww-data-g33
#useradd-u33www-datawww-data
#chown-Rwww-data:
www-data/var/www
//安装依赖库
#apt-getinstalllibpcre3libpcre3-devlibpcrecppolibssl-devzlib1g-dev
//编译安装
#tar-zxvfnginx-1.0.2.tar.gz/
#cdnginx-1.0.2/
#./configure--with-http_ssl_module\#开启对HTTPS的支持
--with-http_stub_status_module\#开启nginx运行状态查看支持
---with-gzip_static_module\#开启对gzip的支持
#make
#makeinstall
nginx启动进程。
//启动
#cd/usr/local/nginx/sbin
#./nginx
从测试机访问http:
//192.168.56.100,如果出现welcometonginx,则说明安装正常。
nginx结束进程。
//结束
#ps-aux|grepnginx
//结果中有www-data用户的两个进程,记录进程号
#kill进程号
4.2Apache的设计部署
4.2.1XAMPP的安装
XAMPP[8]的安装和普通软件的安装一样,安装过程中有一个安装选项需要注意,如图3所示,需要选择是否安装为系统服务。
图3选择是否安装为服务
4.2.2Apache的启动和配置
Apache的安装不需要添加为服务,启动XAMPPControlPanel,startApache效果如图4所示。
图4Apache启动
点击Admin,首页的启动效果如图5所示。
图5XAMPP启动首页
点击安全选项,会看到系统提示:
未进行安全设置,通过提示URL,可以进行设置,如图6所示。
图6XAMPP安全提示
如图7所示,提示为XAMPP目录设置密码,防止外部网络的非法访问。
图7XAMPP目录保护
输入用户名和密码:
baiboer,baiboer。
重新刷新出现如下窗口,要求输入用户名和密码,如图8所示。
图8XAMPP登录窗口
4.3MySQL的安装和配置
MySQL的管理要启用phpMyAdmin,同时要启用本地Apache服务器,所以安装完成后,启动面板,要同时启动Apache和MySQL,如图9所示。
图9MySQL启动
点击admin,进入首页,同Apache一样,点击安全设置,按照向导给MySQL的root用户设置密码baiboer。
如图10所示。
图10设置root密码
刷新页面出现如图11的界面,要求输入账号和密码。
图11登录phpMyAdmin
输入root作为用户名,输入密码baiboer,进入phpMyAdmin首页以后,选择权限标签,点击添加用户,出现如图12的界面。
图12添加新用户
分别建立三个用户给Web服务器,用于对数据库的访问,用户数据库选择“无”,在全局权限中,勾选所有复选框,点击执行。
三组用户设置如表1所示:
表1用户设置详情
用户名
密码
主机(即该用户登录ip)
discuz
baiboer
192.168.56.102
discuzs
Baiboer123
192.168.56.103
discuzss
Baiboer123s
192.168.56.105
由于MySQL默认的远程连接采用的是域名连接,要使用ip连接,需要在MySQL的配置文件~(~代表XAMPP的安装目录)\mysql\bin\my.ini的[mysql]部分添加skip-name-resolve选项。
默认安装完成后会看到提示两个错误,如图13,14所示。
图13链接表
图14连接失败
出现图13错误,是因为没开启tracking功能(用于记录SQL执行),在~\phpMyAdmin\config.inc.php中加入$cfg['Servers'][$i]['tracking']='pma_tracking';但是phpMyAdmin的数据库即pma中并没有对应的表,所以需要使用phpMyAdmin的数据库导入功能重新导入~\phpMyAdmin\scripts下的create_tables.sql。
出现图14错误是因为上述配置文件config.inc.php中未加入root用户的权限,添加以下代码:
$cfg['Servers'][$i]['controluser']='root';
$cfg['Servers'][$i]['controlpass']='baiboer';
4.4Discuz!
X的安装
在XAMPP的Apache中添加虚拟主机,XAMPP会自动把默认目录更改为该虚拟主机的目录。
在各Apache服务器配置文件~\apache\conf\extra\httpd-vhosts.conf中添加以下代码:
80> ServerAdminbaiboer123@ DocumentRoot"~/htdocs/discuz" ServerNamediscuz.cc ServerAliaswww.discuz.cc ErrorLog"logs/discuz-error.log" CustomLog"logs/discuz-access.log"combined
拷贝Discuz!
X的网站代码目录upload到htdocs目录下,并重命名为discuz,在浏览器中输入http:
//localhost/出现如图15所示的安装许可界面,图16所示的安装环境检测,图17所示的UCenterServer(Discuz!
X的运行底层支持)的安装方式。
图15安装许可
图16安装环境检测
图17设置运行环境
图18安装数据库
如图18所示,数据库安装的基本配置,3台Apache服务器的配置基本相同,第一台输入用户名、密码正常安装,后两台输入其对用的用户名、密码,如表1所示。
因为第一次安装数据库,对应的数据库名和表已存在,后两次都是覆盖安装,会出现如图19所示的复选框选项,其他同图18,勾选即可实现覆盖安装,之后即可安装完成。
图19强制安装
4.5nginx的详细配置
编译安装[4]的过程中并没有选择其安装目录,其默认目录为/usr/local/nignx,配置文件为默认目录下的conf/nginx.conf。
4.5.1常规选项的设置
//指定nginx的用户和组。
userwww-datawww-data;
//运行时的进程数,一般是CPU的核数的一倍或两倍。
worker_processes2;
//发生错误的日志存放地址,默认为安装目录下的logs。
error_loglog
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- 基于 Linuxnginx 反向 代理服务器 应用 研究 毕业论文