Nginx是Apache服务的一个很好的替代品。其特点是内存少,并发能力强。事实上,nginx的并发能力优于其他同类型的web服务器。因此,淘宝、京东、百度、新浪、网易、腾讯等国内知名厂商的网站都使用了Nginx。在日常的工作学习中,我们应该如何优化我们的Nginx服务器呢?我们应该如何处理以下问题?1、如何自定义返回给客户端的404错误页面1)优化前,如果客户端使用浏览器访问不存在的页面,会提示404filenotfound[root@client~]#firefoxhttp://192.168.4.5/xxxxx//访问一个不存在的页面2)修改Nginx配置文件,自定义错误页面[root@proxy~]#vim/usr/local/nginx/conf/nginx.conf....charsetutf-8;//只有需要中文的时候才修改这个选项error_page404/404.html;//自定义错误页面....[root@proxy~]#vim/usr/local/nginx/html/404.html//生成错误页面哎呀,NoNOnopage...[root@proxy~]#nginx-sreload#请确保nginx处于启动状态,否则运行该命令会报错。报错信息如下:#[error]open()"/usr/local/nginx/logs/nginx.pid"failed(2:Nosuchfileordirectory)3)优化后,客户端使用浏览器访问一个页面,确实不存在,会提示自己定义的40x.html页面[root@client~]#firefoxhttp://192.168.4.5/xxxxx//访问一个不存在的页面常见的http状态码可以参考参考表2.如何查看服务器状态信息(非常重要的功能)1)编译安装时,使用--with-http_stub_status_module打开状态页面模块[root@proxy~]#tar-zxvfnginx-1.12.2.tar。gz[root@proxy~]#cdnginx-1.12.2[root@proxynginx-1.12.2]#./configure\>--with-http_ssl_module//开启SSL加密功能>--with-stream//开启TCP/UDP代理模块>--with-http_stub_status_module//打开status状态页面[root@proxynginx-1.12.2]#make&&makeinstall//编译安装2)开启Nginx服务,查看监听端口状态。ss命令可以查看系统中启动的端口信息。该命令常用选项如下:-a显示所有端口信息-n以数字形式显示端口号-t显示TCP连接的端口-u显示UDP连接的端口-l显示连接的端口信息service是监听的,比如httpd启动后,会一直监听80端口-p显示监听端口的服务名(即程序名)注:在RHEL7系统中,可以用ss命令代替netstat命令,具有相同的功能和选项[root@proxy~]#/usr/local/nginx/sbin/nginx[root@proxy~]#netstat-anptu|grepnginxtcp000.0.0.0:800.0.0.0:*LISTEN10441/nginx[root@proxy~]#ss-anptu|grepnginx3)修改Nginx配置文件,定义状态页[root@proxy~]#cat/usr/local/nginx/conf/nginx.conf……location/status{stub_statuson;#allowIPaddress;#denyIPaddress;}…[root@proxy~]#/usr/local/nginx/sbin/nginx-sreload4)优化后查看状态页面信息[root@proxy~]#curlhttp://192.168.4.5/statusActiveconnections:1serveracceptshandledrequests10103Reading:0Writing:1Waiting:0Activeconnections:当前活动连接数。接受:客户端已接受的连接总数。Handled:已处理的客户端连接总数。(一般和accepts一致,除非服务器限制连接数)。Requests:客户端发送的请求数。Reading:当前服务器正在读取客户端请求头的个数。写入:当前服务器正在写入响应消息的数量。Waiting:当前有多少客户端正在等待服务器的响应。3.优化Nginx并发1)优化前使用ab高并发测试[root@proxy~]#ab-n2000-c2000http://192.168.4.5/Benchmarking192.168.4.5(bepatient)socket:Toomanyopenfiles(24)//提示打开文件过多2)修改Nginx配置文件,增加并发量[root@proxy~]#vim/usr/local/nginx/conf/nginx.conf....worker_processes2;//与thenumberofCPUcoresevents{worker_connections65535;//每个worker的最大并发连接数}....[root@proxy~]#/usr/local/nginx/sbin/nginx-sreload3)优化Linux内核参数(最大文件数)[root@proxy~]#ulimit-a//查看所有属性值[root@proxy~]#ulimit-Hn100000//设置硬限制(临时规则)[root@proxy~]#ulimit-sn100000//设置软限制(临时规则)[root@proxy~]#vim/etc/security/limits.conf....*softnofile100000*hardnofile100000#配置文件分为4列,分别如下:#用户或组硬限制或软限制t需要限制的项目Value4)测试优化后服务器的并发(因为客户端没有调整内核参数,所以在proxy中测试)[ot@proxy~]#ab-n2000-c2000http://192.168.4.5/4.优化Nginx包头缓存1)优化前用脚本测试长头请求是否能得到响应[root@proxy~]#catlnmp_soft/buffer.sh#!/bin/bashURL=http://192.168.4.5/index.html?foriin{1..5000}doURL=${URL}v$i=$idonecurl$URL//循环5000次后,生成长URL地址栏[root@proxy~]#./buffer.sh....
