您好,欢迎访问三七文档
当前位置:首页 > 行业资料 > 酒店餐饮 > Nginx实战篇+安装部署与配置全解析
Ngix实战篇安装部署与配置全解析TRS王纯刚2011/03/25出品Nginx实战篇安装部署与配置全解析1写在正文之前最近质保在计划做Portal的性能测试,考虑到在国家统计局项目前期规划到2000多并Ngix实战篇安装部署与配置全解析TRS王纯刚2011/03/25出品发的PV情况下面,静态文件的压力会超过10000。根据对Nginx的介绍,Nginx的性能和Apache相比,会有100%的提升。原因:得益于Nginx使用了最新的epoll(Linux2.6内核)和kqueue(freebsd)网络I/O模型,而Apache则使用的是传统的select模型。目前Linux下能够承受高并发访问的Squid、Memcached都采用的是epoll网络I/O模型。所以计划对主流的WebServer进行对比性能测试,特引入Nginx进行配置,在测试环境中现场实战了一次,特将过程记录总结如下。注:在真正性能测试结束时,再给出各个WebServer的性能对比结果,欢迎大家持续关注。2部署步骤2.1下载介质NgInx部署之前,首先根据项目的需要选择需要安装的组件,实际环境一般会考虑需要支持gzip压缩和rewrite模块。所以安装的第一步是下载Ngix及Ngix的相关组件。Nginx本身下载地址:建议下载最新版本介质,目前最新的是:0.9.6gzip压缩依赖库:zlib下载地址:我下载的版本是:Version1.2.5Rewrite模块的正则表达式依赖库:pcrepcre库简称:Perl兼容正则表达式(PerlCompatibleRegularExpressions)库。关于正则表达式的写法可以参考附件《perlre-perldoc_perl_org.mht》下载地址:我下载的版本是:pcre-8.022.2编译部署介质2.2.1部署zlib库执行Linux命令解压缩后编译安装:Ngix实战篇安装部署与配置全解析TRS王纯刚2011/03/25出品tar-zxvfzlib-1.2.5.tar.gz./configuremakemakeinstall默认安装到/usr/local/lib下即可。安装完成后可以ls-l/usr/local/lib/libz.so查询是否安装成功,安装成功后,通过ls可以提示文件已经存在。2.2.2部署pcre库执行Linux命令解压缩后编译安装:tar-zxvfpcre-8.02.tar.gz./configuremakemakeinstall默认安装到/usr/local/lib下即可,安装完成后可以ls-l/usr/local/lib/libpcre.so查询是否安装成功2.2.3部署nginx1.解压缩介质:tar-zxvfnginx-0.9.6.tar.gz2.编译./configure--prefix=/opt/nginx--with-poll_module–with-http_stub_status_module需要关注编译的日志checkingforepoll...found代表找到了高效的poll模式checkingforPCRElibrary...found代表找到了pcre库checkingforzliblibrary...found代表找到了zlib库如果后面需要用到状态监控,需要加上-with-http_stub_status_module3.用make来安装:makemakeinstall4.验证nginx是否部署成功cd/opt/nginx/sbin./nginxnetstat-ano|grep80|grepnginx,看到nginx在80端口处于监听状态,代表配置成功。部署的两点注意:1.在kernel2.6的情况下面,推荐使用poll模式2.偷懒的情况,可以创建一个软链接到/usr/sbin下ln-s/opt/nginx/sbin/nginx/usr/sbin/nginxNgix实战篇安装部署与配置全解析TRS王纯刚2011/03/25出品2.2.4启动和停止nginx启动cd/opt/nginx/sbin./nginx停止./nginx-sstop重新启动./nginx–sreload一点小知识:查看Web请求的部分信息(推荐用httpwatch某些情况用不了的时候直接Linux命令)curl--head127.0.0.1:81HTTP/1.1200OKServer:nginx/0.9.6Date:Wed,23Mar201107:29:24GMTContent-Type:text/htmlContent-Length:151Last-Modified:Wed,23Mar201106:11:44GMTConnection:keep-aliveAccept-Ranges:bytes2.3配置nginxnginx配置文件存在安装目录的conf,如/opt/nginx/conf/nginx.conf下。配置文件修改后,可用nginx-t来进行测试2.3.1配置gzip压缩配置Gzip压缩,在nginx.conf配置文件中加入:gzipon;gzip_min_length1024;gzip_buffers48K;gzip_typestext/plainapplication/x-javascripttext/xmltext/csstext/htmlapplication/xml;每个命令详解如下:Ngix实战篇安装部署与配置全解析TRS王纯刚2011/03/25出品zip_min_length设置允许压缩的页面最小字节数,页面字节数从header头中的Content-Length中进行获取。默认值是0,不管页面多大都压缩。建议设置成大于1k的字节数,小于1k可能会越压越大。gzip_types配置需要压缩的请求的Content-Type类型,对符合指定类型的请求启用gzip压缩。gzip_buffers设置系统获取几个单位的缓存用于存储gzip的压缩结果数据流。例如44k代表以4k为单位,按照原始数据大小以4k为单位的4倍申请内存。48k代表以8k为单位,按照原始数据大小以8k为单位的4倍申请内存。2.3.2高性能配置设置工作的进程数worker_processes5;设置后重新启动Nginx,可以查看到后台进程:[root@test217html]#ps-ef|grepnginxroot319301015:00?00:00:00nginx:masterprocessnginxnobody3193131930015:00?00:00:00nginx:workerprocessnobody3193231930015:00?00:00:00nginx:workerprocessnobody3193331930015:00?00:00:00nginx:workerprocessnobody3193431930015:00?00:00:00nginx:workerprocessnobody3193531930015:00?00:00:00nginx:workerprocess指定事件响应模式为为高效的poll模式events{useepoll;worker_connections1024;}2.3.3配置nginx状态监控在Nginx.conf配置文件中增加:location/NginxStatus{stub_statuson;}重新启动Nginx,通过浏览器访问,就可以看到状态监控页面。Ngix实战篇安装部署与配置全解析TRS王纯刚2011/03/25出品状态监控结果详细解读:Activeconnections:2当前nginx正处理的活动连接数serveracceptshandledrequests3310总共处理了3次连接,成功创建了3次连接,共请求了10次。总连接数-成功连接数为失败连接数Reading:0Writing:1Waiting:1readingnginx读取到客户端的header信息数Writingnginx返回给客户端的Header信息数Waiting开启keep-alive的情况下,这个值等于active-(reading+writing),意思指nginx已经处理完正在等候下一次请求的驻留连接2.3.4反向代理实现动静结合(NgInx+Tomcat/WebLogic/WebSphere)1.通过location来区分动静文件;静态文件,在配置文件中增加:location/portal{root/home/trs/wchg/}注意:这里有个陷阱,就是root的目录是指portal目录的父目录2.动态文件转发给应用服务器动态文件通过正则表达式区分,所以需要配置pcre库,在配置文件中增加:location~^/wcm/.*\.(jsp|do){proxy_pass}根据应用的不同可能需要转发的请求也不同,只要在我的这个配置(jsp|do|XXX),后面的XXX类似替换为需要转发的后缀就可以了。注意:和Rewrite的不同,匹配到的字符串后面不要再加上$1了。3.反向代理的高级参数一般在nginx.conf配置文件中增加:proxy_set_headerX-Forwarded-For$proxy_add_x_forwarded_for;proxy_set_headerX-Real-IP$remote_addr;proxy_set_headerHost$host;Ngix实战篇安装部署与配置全解析TRS王纯刚2011/03/25出品带上客户原始请求IP等请求信息proxy_set_headerX-Forwarded-For$proxy_add_x_forwarded_for;保留客户端传递过来的XFF信息;XFF信息记录Http请求的真实的客户端,也就是HTTP的请求端真实的IP,只有在通过了HTTP代理或者负载均衡服务器时才会添加该项;保留客户端请求的真实IP地址,用于某些访问统计proxy_set_headerX-Real-IP$remote_addr;保留客户端请求的域名信息proxy_set_headerHost$host;4.反向代理的优化参数proxy_connect_timeout30;nginx跟后端服务器连接超时时间proxy_send_timeout30;后端服务器数据回传时间(代理发送超时)proxy_read_timeout60;连接成功后,后端服务器响应时间(代理接收超时)proxy_buffer_size16k;设置代理服务器(nginx)保存用户头信息的缓冲区大小proxy_buffers432k;proxy_buffers缓冲区,网页平均在32k以下的话,这样设置proxy_busy_buffers_size64k;高负荷下缓冲大小(proxy_buffers*2)proxy_temp_file_write_size256k;设定缓存文件夹大小,大于这个值,将从upstream服务器传当代理下载的文件超过该参数设置的大小时,nginx会先将文件写入临时目录(缺省为nginx安装目下/proxy_temp目录),注意:更多优化参数可以参考《HttpProxyModule.mht》2.3.5配置虚拟主机很简单,Server节点就是一个虚拟主机1.复制自带的Server节点2.在Server节点中的Server_Name改成虚拟主机名就可以了server{listen81;server_nameportal.test.cn;}Ngix实战篇安装部署与配置全解析TRS王纯刚2011/03/25出品2.3.6配置静态
本文标题:Nginx实战篇+安装部署与配置全解析
链接地址:https://www.777doc.com/doc-2889647 .html