资源描述
基于Linux_nginx_反向代理服务器的应用研究基于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.2Ubuntu Server 10.04.2 LTS22.3nginx22.4反向代理32.5Discuz! X32.6XAMPP32.6.1Apache42.6.2MySQL42.6.3phpMyAdmin42.6.4FileZilla42.6.5ApacheBench43系统的需求分析、可行性分析和总体设计53.1需求分析53.2可行性分析53.2.1技术实现可行性分析63.2.2经济可行性分析63.3系统总体设计63.3.1负载均衡系统的拓扑图73.3.2负载均衡系统的层次结构图84系统详细设计94.1nginx反向代理服务器设计部署94.1.1系统总体环境的说明94.1.2Ubuntu的安装和配置94.1.3nginx的编译安装、启动和关闭104.2Apache的设计部署114.2.1XAMPP的安装114.2.2Apache的启动和配置124.3MySQL的安装和配置144.4Discuz ! X的安装184.5nginx的详细配置214.5.1常规选项的设置214.5.2http模块配置224.5.3upstream子模块234.5.4server子模块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答 谢38381 绪论1.1 课题研究的背景随着Web 2.0时代的到来,互联网上的信息已不再是企业或个人的商业行为,而是所有互联网的用户通过求知的力量彼此协作的产物,所有的用户既是信息的提供者又是信息的获取者。信息的爆炸式的发展,使得互联网上的知识更加的丰富多彩,同时为所有用户节约了很多处理已有问题的时间。并且社交类网站的兴起,促进了人们的交流,也充分说明了用户交互是未来网络发展的必然趋势。但这种方式的出现给Web的服务器提供商提出了新的挑战。出现了例如:如何能够应对高并发的访问量,如何能够实时的响应请求,如何能够有效的利用服务器资源等问题。各大IT公司纷纷提供了自己的解决方案。1.2 课题研究的意义随着网络用户的不断增加,Web服务器的负载压力越来越大,通过分布式服务器的模式可以实现Web服务分离,并且可以由多个服务器提供一项负载压力特别大的服务,从而解决压力过大的问题,而且这种模式的扩展性和灵活性很强,可以在以后随着业务的增加或减少进行可伸缩的改变。同时,数据的安全性也得到了提高,通过双备份和高可用技术,可以实现数据的多重备份和实时替换,使得整个系统不会因为一台设备的故障而影响全局。大大提高了系统的稳定性和安全性。2 系统实现的原理2.1 基于Web的分布式系统 Web1的客户-服务器模式要解决的关键问题就是负载过大问题,Web分布式系统2可以解决这个问题。一个比较实用的方法就是:把Web服务器复制成为一个Web服务器集群,使用一个统一的前端(如nginx)把客户端的请求均衡的分配给后端Web服务器集群。2.2 Ubuntu Server 10.04.2 LTSUbuntu3 是基于Debian的Linux 发行版,该项目起始于2004年,它虽然很年轻,却在短短的几年间,变成了Linux发行版中用户量最多的一位。Ubuntu 的运行和维护依赖于Mark Shuttleworth创建的Canonical公司,当然也离不开广大Linux爱好者的支持。本论文采用的是Ubuntu Server 10.04.2 LTS版,其中10.04.2意思是首次发布于2010年4月的第二个维护版本,LTS表示将提供长达5年的安全和更新支持。2.3 nginxnginx4是由俄罗斯人Igor Sysoev编写的一款高性能的反向代理和Web服务器软件。在Linux(2.6内核)、FreeBSD和Solaris 10中分别可以使用epoll、kqueue和eventport作为网络I/O模型。它具有高并发连接的特点,官方称其可以达到50000个,但是即便这样,它在CPU、内存占用方面却是非常的低,而且其稳定性也相当的好。5月初nginx5发布了1.0.0版本,这意味着历时达9年之久的nginx开发已经正式迈入了新的阶段。本次论文设计采用的是最新稳定版1.0.2。2.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 Apache7服务器是一种开放源代码的HTTP服务器,支持多种操作系统平台,目前是最流行的WWW服务器软件之一。它是相当优秀和经典的Web服务器,本次设计中需要开启对PHP的支持。2.6.2 MySQL MySQL7是一个开源的小型关系型数据库软件,具有多平台支持和移植性强的特点,同时拥有良好的性能。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,主要是为其提供运行的环境,并在各方面进行优化。重点需要实现以下几个方面:反向代理和负载均衡:通过前端服务器代理后端服务器集群,实现负载的均衡分配。静态数据缓存:在网络数据传输的过程中,网站的静态数据可以通过定期缓存到前端代理服务器的方式大大的减少前端服务器与后端服务器的数据通信流量。会话保持:用户输入自己的账户和密码后登陆,其实是定位到了服务器集群中的某一台。如果用户刷新,遵照负载均衡的轮询规则,用户就被指引到了另外一台服务器,需要重新登陆。这样不仅用户麻烦,而且会无形中加大服务器的负担,所以要把一个用户定位到一个服务器上不变。Web和数据库的分离:随着数据的增加,需要把数据库和Web分离出来,由独立的一台服务器提供数据库服务,从而提高整个集群系统的性能。Web和静态附件的分离:由于静态附件的体积较大和文件繁多,使得附件的传输和管理成为Web服务器高速运行的瓶颈。如果把静态附件分离出来,不仅可以大大减轻Web压力,还能提高附件上行和下行的效率。3.2 可行性分析针对需求分析,进行以下可行性分析。3.2.1 技术实现可行性分析通过nginx的http模块的反向代理和负载均衡功能解决相应的问题,启用ip_hash实现会话保持。对于静态数据缓存可在nginx的server模块中加入相应的缓存设置。通过分别部署Discuz !X Web服务器,并设置其连接远程数据库服务器实现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 负载均衡系统的层次结构图用户请求反向代理层Web应用层层文件/数据层FTP服务器数据库服务器分配请求nginx图2 层次结构图图2为整个系统的层次结构图2。用户发送请求经过了三个层次结构,反向代理层会根据用户的请求以轮询的形式把请求转发给Web应用层,Web应用层再根据请求的具体内容去访问文件层和数据层。4 系统详细设计4.1 nginx反向代理服务器设计部署4.1.1 系统总体环境的说明广域网模拟的必要性:要模拟广域网环境就需要加入DNS服务和路由器,来实现在不同网络之间的互联和模拟域名的解析。但是其实还是没能真实的体现广域网多网络和众多用户的特点,所以没有采用上述方法模拟广域网环境。在本系统中,nginx要求主机有一个域名,所以在测试客户端的系统hosts文件中加入如下代码,实现域名解析。192.168.56.100 www.discuz.cc该系统中所有的计算机全部采用相同配置的联想台式机。大体配置如下: CPU:Intel Pentium(R) Dual-Core E5300 2.60GHz 内存:2GB 硬盘:250GB操作系统平台:除了反向代理服务器采用Ubuntu 10.04.2 LTS外,其他的一律为Windows Xp Professional SP2。4.1.2 Ubuntu的安装和配置Ubuntu 的安装过程和其他Linux发行版的安装过程差不多,甚至还要更简单。文件系统采用最经典的分法:根文件系统 /,swap交换区(1.5倍于内存大小)。安装完成后,配置/etc/apt/sources.list软件源,以备下一步安装库文件。静态ip的配置/etc/network/interfaces,屏蔽#iface eth0 inet dhcp,添加 address 192.168.56.100 netmask 255.255.255.0 gateway 192.168.56.14.1.3 nginx的编译安装、启动和关闭5月初nginx4发布了1.0.0版本,这意味着nginx已经正式迈入了新的阶段,此间历时达9年之久,本次编译采用最新稳定版1.0.2,从官方下载源代码nginx-1.0.2.tar.gz。编译安装过程如下:/更新到最新的软件列表文件#apt-get update/ 创建nginx 专用组和用户#groupadd www-data -g 33#useradd -u 33 www-data www-data#chown -R www-data:www-data /var/www/安装依赖库#apt-get install libpcre3 libpcre3-dev libpcrecppo libssl-dev zlib1g-dev/编译安装#tar -zxvf nginx-1.0.2.tar.gz /#cd nginx-1.0.2/#./configure -with-http_ssl_module #开启对HTTPS的支持-with-http_stub_status_module #开启nginx运行状态查看支持-with-gzip_static_module #开启对gzip的支持#make#make installnginx启动进程。/启动#cd /usr/local/nginx/sbin#./nginx从测试机访问http:/192.168.56.100 ,如果出现welcome to nginx,则说明安装正常。nginx结束进程。/结束#ps -aux | grep nginx /结果中有www-data用户的两个进程,记录进程号#kill 进程号4.2 Apache的设计部署4.2.1 XAMPP的安装XAMPP8的安装和普通软件的安装一样,安装过程中有一个安装选项需要注意,如图3所示,需要选择是否安装为系统服务。图3 选择是否安装为服务4.2.2 Apache的启动和配置Apache的安装不需要添加为服务,启动XAMPP Control Panel,start Apache 效果如图4所示。图4 Apache启动点击Admin,首页的启动效果如图5所示。图5 XAMPP启动首页点击安全选项,会看到系统提示:未进行安全设置,通过提示URL,可以进行设置,如图6所示。图6 XAMPP安全提示如图7所示,提示为XAMPP目录设置密码,防止外部网络的非法访问。图7 XAMPP目录保护输入用户名和密码:baiboer,baiboer。重新刷新出现如下窗口,要求输入用户名和密码,如图8所示。图8 XAMPP登录窗口4.3 MySQL的安装和配置MySQL的管理要启用phpMyAdmin,同时要启用本地Apache服务器,所以安装完成后,启动面板,要同时启动Apache和MySQL,如图9所示。图9 MySQL启动点击admin,进入首页,同Apache一样,点击安全设置,按照向导给MySQL的root用户设置密码baiboer。如图10所示。图10 设置root密码刷新页面出现如图11的界面,要求输入账号和密码。图11 登录phpMyAdmin输入root作为用户名,输入密码baiboer,进入phpMyAdmin首页以后,选择权限标签,点击添加用户,出现如图12的界面。图12 添加新用户分别建立三个用户给Web服务器,用于对数据库的访问,用户数据库选择“无”,在全局权限中,勾选所有复选框,点击执行。三组用户设置如表1所示:表1 用户设置详情用户名密码主机(即该用户登录ip)discuzbaiboer192.168.56.102discuzsBaiboer123192.168.56.103discuzssBaiboer123s192.168.56.105由于MySQL默认的远程连接采用的是域名连接,要使用ip连接,需要在MySQL的配置文件(代表XAMPP的安装目录)mysqlbinmy.ini的mysql部分添加skip-name-resolve选项。默认安装完成后会看到提示两个错误,如图13,14所示。图13 链接表图14 连接失败出现图13错误,是因为没开启tracking功能(用于记录SQL执行),在phpMyAdminconfig.inc.php中加入$cfgServers$itracking = pma_tracking;但是phpMyAdmin的数据库即pma中并没有对应的表,所以需要使用phpMyAdmin的数据库导入功能重新导入phpMyAdminscripts下的create_tables.sql。出现图14错误是因为上述配置文件config.inc.php中未加入root用户的权限,添加以下代码:$cfgServers$icontroluser = root;$cfgServers$icontrolpass = baiboer;4.4 Discuz ! X的安装在XAMPP的Apache中添加虚拟主机,XAMPP会自动把默认目录更改为该虚拟主机的目录。在各Apache服务器配置文件apacheconfextrahttpd-vhosts.conf中添加以下代码: ServerAdmin baiboer123 DocumentRoot /htdocs/discuz ServerName discuz.cc ServerAlias www.discuz.cc ErrorLog logs/discuz-error.log CustomLog logs/discuz-access.log combined拷贝Discuz!X的网站代码目录upload到htdocs目录下,并重命名为discuz,在浏览器中输入http:/localhost/ 出现如图15所示的安装许可界面,图16所示的安装环境检测,图17所示的UCenter Server(Discuz !X的运行底层支持)的安装方式。图15 安装许可图16 安装环境检测图17 设置运行环境图18 安装数据库如图18所示,数据库安装的基本配置,3台Apache服务器的配置基本相同,第一台输入用户名、密码正常安装,后两台输入其对用的用户名、密码,如表1所示。因为第一次安装数据库,对应的数据库名和表已存在,后两次都是覆盖安装,会出现如图19所示的复选框选项,其他同图18,勾选即可实现覆盖安装,之后即可安装完成。图19 强制安装4.5 nginx的详细配置编译安装4的过程中并没有选择其安装目录,其默认目录为/usr/local/nignx,配置文件为默认目录下的conf/nginx.conf。4.5.1 常规选项的设置/指定nginx的用户和组。user www-data www-data;/运行时的进程数,一般是CPU的核数的一倍或两倍。worker_processes 2;/发生错误的日志存放地址,默认为安装目录下的logs。error_log logs/error.log;/进程号存放地址pid logs/nginx.pid;/事件模块指令events use epoll; #使用linux 2.6 内核的网络I/O模型worker_connections 1024; #每个工作进程处理最大的连接数4.5.2 http模块配置http模块主要是设置http的相关参数。http #设置使用的字符集include mime.types; default_type application/octet-stream;#设定请求缓存client_header_buffer_size 32k;large_client_header_buffers 4 32k;#设置用户端所能够上传的文件的大小client_max_body_size 10m;sendfile on;keepalive_timeout 60;#开启gzip支持gzip on;4.5.3 upstream子模块upstream discuz_pool ip_hash;server 192.168.56.102 max_fails=2 fail_timeout=30s;server 192.168.56.103 max_fails=2 fail_timeout=30s;server 192.168.56.105 max_fails=2 fail_timeout=30s;还可以加入一个weight=*,但是启用了ip_hash之后,该功能就无法设置了,因为单用户定向保持在一台服务器上已经违背了轮询的原则。但是真正从所有用户请求的角度来说,并不影响负载均衡的实现。同时三台Web服务器的配置是相同的,所以就算加入weight 属性也应该一样的。所示,在本设计中,ip_hash实现了用户的会话定位,不至于出现刷新掉线,同时也没有影响负载均衡的实现。4.5.4 server子模块server 子模块用来实现一个虚拟主机,监听80端口,并且把请求地址转到upstream模块。同时还可以定义错误页面。serverlisten 80;servername www.discuz.cc; location / proxy_pass http:/discuz_pool;#允许转发为应答 proxy_set_header Host www.discuz.cc; #用于获取客户端ip proxy_set_header X-Forwarded-For $remote_addr;access_log /home/nginx/logs/www.discuz.cc.log; #访问日志文件error_page 404 /404.html;error_page 500 502 503 504 /50x.html;location= /50x.html root html;4.5.5 静态数据缓存的设计实现静态数据缓存4的实现主要是在server模块中加入location子模块,并且添加缓存目录,用于存放指定扩展名的文件。可以设置文件的缓存时间和缓存空间的大小等。在nginx的基本配置中加入:proxy_temp_path /var/www/temp;proxy_cache_path /var/www/cache levels=1:2 keys_zone=cache_one:300m inactive=1d max_size=10g;需要注意的是,proxy_temp_path和proxy_cache_path必须在同一个分区。添加location模块代码:Location .*.(gif|jpg|jpeg|png|bmp|swf|js|css|)$proxy_cache cache_one; #使用Web缓存区/对不同的http状态码设置不同的缓存时间proxy_cache_vaild 200 304 12h;#客户端请求已成功,自上次请求后未更改proxy_cache_vaild 301 302 3m;#请求内容一永久或临时移到其他位置proxy_cache_vaild any 1m;其他proxy_cache_key $host$uri$is_args$args; #设置Web缓存的key值proxy_set_header Host $host;proxy_set_header X-Forwarded-For $remote_addr;proxy_pass http:/discuz_pool;4.6 远程FTP附件的安装和配置4.6.1 安装FTP服务器安装XAMPP,在安装的过程中需要把FileZilla安装为服务,启动XAMPP Control Panel即可启动,如图20所示。图20 FileZilla启动点击Admin,出现如图21所示本地管理员登陆对话框,需要输入密码discuz,图21 本地管理登陆点击ok进入后,点击齿轮图标,进入FileZilla的设置选择,选择如图22所示的选项,并更改密码。图22 管理密码更改如图23所示,新建用户discuzftp,并设置密码为discuzftp,默认目录为F:discuzftp。图23 新建用户和密码设置经Discuz !X的附件测试发现,需要开启anonymous用户,并且密码空,默认目录和discuzftp相同,如图24所示。图24 添加annoymous用户权限4.6.2 设置Discuz !X远程附件在测试机的地址栏中输入http:/www.discuz.cc 即可打开首页,并且会自动跳转为forum.php如图25所示。图25 网站首页进入后台管理登陆界面如图26所示,输入默认用户名和密码admin,admin。图26 网站后台登陆单击全局标签,选择左侧的上传设置,并选择远程附件,点击启用远程附件即可得到如图27所示的页面。图27 远程附件开启和配置具体设置如图27,28所示,Discuz !X还提供了一个测试FTP连接是否正常的工具见图27,成功后会弹出如图29的窗口,然后点击图28的提交即可。图28远程附件开启和配置图29 测试连接正常5 测试5.1 测试测试分为两个方面,一个是使用ApacheBenche进行压力测试,另一个是由3个测试者进行实时测试。5.1.1 压力测试在测试机使用ApacheBench的可执行文件ab.exe在命令行中,输入以下代码:/ab.exe c 1000 n 1000000 http:/www.discuz.cc/index.php表示由测试机同时进行1000个并发连接,并且发送1000000次。测试结果显示,前端代理服务器的cpu占用最高为20%左右,而后端Web服务器的CPU占用几乎一直在一个水平线上波动,数据库的CPU占用在20%左右。图30,31,32所示,分别为测试中Web1,Web2,Web3的CPU占用曲线。由图可以看出,3台Web服务器的负载大致是均衡的。图30 Web1 CPU占用曲线图(反色)图31 Web2 CPU占用曲线图(反色)图32 Web3 CPU占用曲线图(反色)图33为ApachBench返回结果,包含访问的服务器的信息,以及整个过程中花费的时间和流量等信息。图33 ApacheBench返回结果(反色)测试完成后,由测试机在浏览器中刷新页面,出现无法连接数据库的错误,表示其中的某台服务器已经宕机,大概30s之后,恢复正常。由结果可以明显看出,nginx超强的并发处理能力,同比例计算一台前端代理应该可以处理后端十几台Web的处理请求。同时也凸现了Web负载能力是整个集群系统的性能瓶颈的问题。5.1.2 实时测试登陆Discuz!X后台,分别建立三个管理员级别的用户:test1,test2,test3,用户名和密码相同,如图34所示。图34 添加用户三个用户分别从三台测试机登陆,由test1用户新建一个帖子,之后test2,test3持续的回复。test1用户不断的刷新,查看来自test2和test3发布的回复,是否能够及时地显示。测试持续几分钟,并未出现异常,则实时测试通过。总 结经过将近一个月的努力实践和测试,基于Linux nginx的负载均衡系统终于设计完成,实现了预期的设计目的和功能。把其中遇到的问题和使用的方法总结如下:首先,在需求分析的过程中,选择合适的软件平台。选择Ubuntu是因为它作为一个年轻的Linux发行版,具有良好的服务支持,完全可以作为生产部署服务器使用。选择XAMPP是因为它提供了所有后台服务器需要的全部软件,可以一次性统一安转,并快速实现相应功能,同时也有良好的性能。Discuz!X是国内用户量最多社区软件,拥有良好的性能和强大的功能,适合在本设计中测试平台的稳定性和完整性。最后,选用了nginx的最新1.0.2版本,Ubuntu软件库中的版本为0.7稳定版,经测试新版较旧版的CPU占用更低。但建议真实生产环境还是采用旧版会更稳定。其次,在本设计中,把静态数据缓存、反向代理放到一个服务器中,在真实部署中,两者应该是分开的,本设计将这两项功能集成在一起,是为了测试前端服务器的承受能力。在安全方面,除了所有用到的帐号和密码为了设计和测试的方便而简化外,其他的都进行了服务器安全性相关的配置。最后,实现负载均衡的方式很多,如使用F5、LVS(Linux Virtual Server)等,它们和nginx比较并没有优劣之分,只不过需要根据真实的应用环境来说,有时候还会采用多种均衡方式混用,来达到最好的性能和效果。总之,在整个设计过程中严格按照软件工程的方法来实现,首先,设计整个网络拓扑,然后逐一的实现相关功能。之后实施过程中,对前期设计中的错误和失误进行不断的修正。设计的整个过程中,遇到问题时,会通过图书馆、网络、与老师和同学讨论等方式,查找解决的办法,并通过自己的分析和实践,查找问题的原因,杜绝问题的二次出现,极大的提高了自己分析问题和解决问题的能力。参考文献1 阮征,徐晓昕,邹晨. Web2.0动态网站开发-PHP技术与应用. 北京:清华大学出版社,2008年.第9,3-6页。2 Andrew S. Tanenbaum,Maarten Van Steen,辛春生 陈宗斌等译. 分布式系统原理与范例(第二版). 北京:清华大学出版社,2008年.第6,65,405-406页。3 刑国庆,张广利,邹浪. Ubuntu权威指南. 北京:人民邮电出版社,2010年1月.第1-16页。4 张宴.实战Nginx:取代Apache的高性能Web服务器. 北京:电子工业出版社,2010年.第6,5-20,75-100,129-136页。5 nginx中文wiki.http:/wiki.nginx.org/Chs.2011年,整页。6 北京康盛新创科技有限公司. Discuz! X帮助文档.Discuz!_usersguide_X1.5.zip,2010年,第1-10页。7 伍云辉.Linux服务器配置与管理指南.北京:清华大学出版社,2010年1月.第238,312页。8 ApacheFriends.XAMPP 的 Windows 版 FAQ .XAMPP官方网站,2010年1月,整页。答 谢由衷的感谢指导老师刘勇对我的认真指导,他严谨的治学态度和深邃的思想深深地影响了我。虽然刘老师很忙,但还是挤出时间指导整个系统设计和帮助我修改论文。再次深深地说一声谢谢!同时感谢所有在我求学期间帮助我、支持我、给予我知识的老师们。衷心感谢实践创新基地提供设计的硬件平台以及室友董飞飞、邱南柱和吴志明给与我的大力支持。最后感谢百忙之中抽时间参加论文评审和答辩的领导和老师们。
展开阅读全文