Nginx是一个非常强大的高性能web和反向代理服务。它有许多非常优越的特性。在高并发连接的情况下,Nginx是Apache服务的一个很好的替代品。其特点是内存少,并发能力强。事实上,nginx的并发能力优于其他同类型的web服务器。因此,淘宝、京东、百度、新浪、网易、腾讯等国内知名厂商的网站都使用了Nginx。在日常的工作学习中,我们应该如何优化我们的Nginx服务器呢?我们应该如何处理以下问题?如何自定义返回给客户端的404错误页面?页面,会提示404filenotfound。[root@client~]#firefoxhttp://192.168.4.5/xxxxx//访问一个不存在的页面修改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)后优化,客户端无法使用浏览器访问如果已有页面,会提示自己定义的40x.html页面。[root@client~]#firefoxhttp://192.168.4.5/xxxxx//访问一个不存在的页面常见的HTTP状态码可以使用参考表:如何查看服务器状态信息(很重要的功能)使用编译安装时--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//开启状态页[root@proxynginx-1.12.2]#make&&makeinstall//编译安装并开启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|grepnginx修改Nginx配置文件,定义状态页面。[root@proxy~]#cat/usr/local/nginx/conf/nginx.conf……location/status{stub_statuson;#allowIP地址;#denyIP地址;}...[root@proxy~]#/usr/local后/nginx/sbin/nginx-sreload优化,查看状态页面信息。[root@proxy~]#curlhttp://192.168.4.5/statusActiveconnections:1serveracceptshandledrequests10103Reading:0Writing:1Waiting:0Activeconnections:当前活跃的连接数。接受:客户端已接受的连接总数。Handled:已处理的客户端连接总数。(一般和accepts一致,除非服务器限制连接数)。Requests:客户端发送的请求数。Reading:当前服务器正在读取客户端请求头的个数。写入:当前服务器正在写入响应消息的数量。Waiting:当前有多少客户端正在等待服务器的响应。优化Nginx并发优化前使用ab高并发测试。[root@proxy~]#ab-n2000-c2000http://192.168.4.5/Benchmarking192.168.4.5(bepatient)socket:Toomanyopenfiles(24)//提示打开的文件太多修改Nginx配置文件为增加并发量。[root@proxy~]#vim/usr/local/nginx/conf/nginx.conf....worker_processes2;//与CPU核数事件一致{worker_connections65535;//每个worker的最大并发连接数}....[root@proxy~]#/usr/local/nginx/sbin/nginx-sreload优化Linux内核参数(最大文件数)。[root@proxy~]#ulimit-a//查看所有属性值[root@proxy~]#ulimit-Hn100000//设置硬限制(临时规则)[root@proxy~]#ulimit-Sn100000//设置softlimit(临时规定)[root@proxy~]#vim/etc/security/limits.conf....*softnofile100000*hardnofile100000#配置文件分为4列,分别为:#用户或组hardlimitorsoftlimit需要限制projectlimit的值来优化测试服务器并发(因为客户端没有调整内核参数,所以在代理上测试)。[root@proxy~]#ab-n2000-c2000http://192.168.4.5/优化Nginx包头缓存优化前先用脚本测试长包头请求是否能得到响应。[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....
