当前位置: 首页 > Linux

一定要收藏!Nginx的五个常见应用场景

时间:2023-04-06 04:25:00 Linux

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....字符集utf-8;//只在需要中文的时候修改这个选项error_page404/404.html;//自定义错误页面....[root@proxy~]#vim/usr/local/nginx/html/404.html//生成错误页面Oops,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//开启状态页面[root@proxynginx-1.12.2]#make&&makeinstallenablexservice2)//编译安装查看listeningportstatusss命令可以查看系统中启动的端口信息。该命令常用选项如下:-a显示所有端口的信息-n以数字形式显示端口号-t显示TCP连接的端口-u显示UDP连接的端口-l显示端口服务正在收听的信息。比如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:*prorootLISTEN1/ngxyin[~]#ss-anptu|grepnginx3)修改Nginx配置文件,定义statuspage[root@proxy~]#cat/usr/local/nginx/conf/nginx.conf……location/status{stub_statuson;地址;#拒绝IP地址;}......[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(耐心等待)socket:Toomanyopenfiles(24)//提示打开文件过多2)修改Nginx配置文件,增加并发量[root@proxy~]#vim/usr/local/nginx/conf/nginx.conf....worker_processes2;//与CPU核数事件一致{worker_connections65535;//每个worker最大并发连接数}....[root@proxy~]#/usr/local/nginx/sbin/nginx-sreload3)优化linux内核参数(最大文件数)[root@proxy~]#ulimit-a//查看所有属性值[root@proxy~]#ulimit-Hn100000//设置硬限制(临时规则)[root@proxy~]#ulimit-SN100000//设置软限制(temporaryrules)[root@proxy~]#vim/etc/security/limits.conf...*SoftNofile100000*HardNoFile100000#这个配置文件分为4列,分别是:#UserorgroupHardlimitorsoftlimit需要限制的项目限制值4)优化后测试服务器并发(因为客户端没有调整内核参数,所以在proxy中测试)[root@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....

414Request-URITooLarge

//提示header信息过大2)修改Nginx配置文件,增加包头缓存大小[root@proxy~]#vim/usr/local/nginx/conf/nginx.conf....http{client_header_buffer_size1k;//默认请求包头信息的缓存large_client_header_buffers44k;//大请求包缓存头信息个数和容量....}[root@proxy~]#/usr/local/nginx/sbin/nginx-sreload3)优化后用脚本测试是否长头请求可以得到响应[root@proxy~]#catbuffer.sh#!/bin/bashURL=http://192.168.4.5/index.html?foriin{1..5000}doURL=${URL}v$i=$idonecurl$URL[root@proxy~]#./buffer.sh5.浏览器在本地缓存静态数据1)使用火狐浏览器查看Caching以火狐浏览器为例,在中输入about:cacheFirefox地址栏显示Firefox浏览器缓存信息,如图,点击ListCacheEntries查看详细信息2)清除firefox本地缓存数据,如图所示。3)修改Nginx配置文件,定义静态页面的缓存时间[root@proxy~]#vim/usr/local/nginx/conf/nginx.confserver{listen80;服务器名称本地主机;位置/{例如。前任。前任。rootindexhtml;html索引.htm;}location~*.(jpg|jpeg|gif|png|css|js|ico|xml)${过期30天;//定义客户端缓存时间为30天}}[root@proxy~]#cp/usr/share/backgrounds/day.jpg/usr/local/nginx/html[root@proxy~]#/usr/local/nginx/sbin/nginx-sreload#请确保nginx已启动,否则运行该命令会报错,错误信息如下:#[error]open()"/usr/local/nginx/logs/nginx.pid"failed(2:Nosuchfileordirectory)4)优化后,使用火狐浏览器访问图片,再次查看缓存信息[root@client~]#firefoxhttp://192.168.4.5/day.jpg在firefox地址栏输入about:cache查看本地缓存数据,查看是否有图片,过期时间是否正确。来源:https://blog.csdn.net/mage_li...