肝货!Nginx 高性能优化配置实战总结

Nginx 是一个很强大的高性能Web和反向代理服务,它具有很多非常优越的特性,在连接高并发的情况下,Nginx是Apache服务不错的替代品。其特点是占有内存少,并发能力强,事实上nginx的并发能力在同类型的网页服务器中表现较好,因此国内知名大厂例如:淘宝,京东,百度,新浪,网易,腾讯等等都在使用Nginx网站。在我们的日常工作学习中,我们会该如何去优化自己的Nginx服务器?遇到以下问题我们该如何处理呢?一、如何自定义返回给客户端的404错误页面

1)优化前,客户端使用浏览器访问不存在的页面,会提示404文件未找到1.[root@client ~]# firefox http://192.168.4.5/xxxxx        //访问一个不存在的页面2)修改Nginx配置文件,自定义报错页面1.[root@proxy ~]# vim /usr/local/nginx/conf/nginx.conf2... ..3.        charset utf-8;                    //仅在需要中文时修改该选项4.error_page   404  /404.html;    //自定义错误页面5... ..6.[root@proxy ~]# vim /usr/local/nginx/html/404.html        //生成错误页面7.Oops,No NO no page …8.9.[root@proxy ~]# nginx -s reload10.#请先确保nginx是启动状态,否则运行该命令会报错,报错信息如下:11.#[error] open() '/usr/local/nginx/logs/nginx.pid' failed (2: No such file or directory)3)优化后,客户端使用浏览器访问不存在的页面,会提示自己定义的40x.html页面1.[root@client ~]# firefox http://192.168.4.5/xxxxx        //访问一个不存在的页面*常见的http状态码可用参考表所示状态码功能描述200一切正常301永久重定向302临时重定向401用户名或密码错误403禁止访问(客户端IP地址被拒绝)404文件不存在414请求URL头部过长500服务器内部错误二、如何查看服务器状态信息(非常重要的功能)1)编译安装时使用--with-http_stub_status_module开启状态页面模块1.[root@proxy ~]# tar  -zxvf   nginx-1.12.2.tar.gz2.[root@proxy ~]# cd  nginx-1.12.23.[root@proxy nginx-1.12.2]# ./configure   \4.> --with-http_ssl_module                        //开启SSL加密功能5.> --with-stream                                //开启TCP/UDP代理模块6.> --with-http_stub_status_module                //开启status状态页面7.[root@proxy nginx-1.12.2]# make && make install    //编译并安装2)启用Nginx服务并查看监听端口状态ss命令可以查看系统中启动的端口信息,该命令常用选项如下:-a显示所有端口的信息-n以数字格式显示端口号-t显示TCP连接的端口-u显示UDP连接的端口-l显示服务正在监听的端口信息,如httpd启动后,会一直监听80端口-p显示监听端口的服务名称是什么(也就是程序名称)注意:在RHEL7系统中可以使用ss命令替代netstat命令,功能一样,选项一样。1.[root@proxy ~]# /usr/local/nginx/sbin/nginx2.[root@proxy ~]# netstat -anptu | grep nginx3.tcp        0        0 0.0.0.0:80        0.0.0.0:*        LISTEN        10441/nginx4.[root@proxy ~]# ss -anptu | grep nginx3)修改Nginx配置文件,定义状态页面1.[root@proxy ~]# cat /usr/local/nginx/conf/nginx.conf2.… …3.location /status {4.                stub_status on;5.                 #allow IP地址;6.                 #deny IP地址;7.        }8.… …9.[root@proxy ~]# /usr/local/nginx/sbin/nginx -s reload4)优化后,查看状态页面信息1.[root@proxy ~]# curl  http://192.168.4.5/status2.Active connections: 1 3.server accepts handled requests4. 10 10 3 5.Reading: 0 Writing: 1 Waiting: 0Active connections:当前活动的连接数量。Accepts:已经接受客户端的连接总数量。Handled:已经处理客户端的连接总数量。(一般与accepts一致,除非服务器限制了连接数量)。Requests:客户端发送的请求数量。Reading:当前服务器正在读取客户端请求头的数量。Writing:当前服务器正在写响应信息的数量。Waiting:当前多少客户端在等待服务器的响应。三、优化Nginx并发量1)优化前使用ab高并发测试1.[root@proxy ~]# ab -n 2000 -c 2000 http://192.168.4.5/2.Benchmarking 192.168.4.5 (be patient)3.socket: Too many open files (24)                //提示打开文件数量过多2)修改Nginx配置文件,增加并发量1.[root@proxy ~]# vim /usr/local/nginx/conf/nginx.conf2... ..3.worker_processes  2;                    //与CPU核心数量一致4.events {5.worker_connections 65535;        //每个worker最大并发连接数6.}7... ..8.[root@proxy ~]# /usr/local/nginx/sbin/nginx -s reload3)优化Linux内核参数(最大文件数量)1.[root@proxy ~]# ulimit -a                        //查看所有属性值2.[root@proxy ~]# ulimit -Hn 100000                //设置硬限制(临时规则)3.[root@proxy ~]# ulimit -Sn 100000                //设置软限制(临时规则)4.[root@proxy ~]# vim /etc/security/limits.conf5.    .. ..6.* soft nofile 1000007.* hard nofile 1000008.9.#该配置文件分4列,分别如下:10.#用户或组 硬限制或软限制 需要限制的项目 限制的值4)优化后测试服务器并发量(因为客户端没调内核参数,所以在proxy测试)1.[root@proxy ~]# ab -n 2000 -c 2000 http://192.168.4.5/四、优化Nginx数据包头缓存1)优化前,使用脚本测试长头部请求是否能获得响应1.[root@proxy ~]# cat lnmp_soft/buffer.sh 2.#!/bin/bash3.URL=http://192.168.4.5/index.html?4.for i in {1..5000}5.do6.    URL=${URL}v$i=$i7.done8.curl $URL                                //经过5000次循环后,生成一个长的URL地址栏9.[root@proxy ~]# ./buffer.sh10... ..11.<center><h1>414 Request-URI Too Large</h1></center>        //提示头部信息过大2)修改Nginx配置文件,增加数据包头部缓存大小1.[root@proxy ~]# vim /usr/local/nginx/conf/nginx.conf2... ..3.http {4.client_header_buffer_size    1k;        //默认请求包头信息的缓存    5.large_client_header_buffers  4 4k;        //大请求包头部信息的缓存个数与容量6... ..7.}8.[root@proxy ~]# /usr/local/nginx/sbin/nginx -s reload3)优化后,使用脚本测试长头部请求是否能获得响应1.[root@proxy ~]# cat buffer.sh 2.#!/bin/bash3.URL=http://192.168.4.5/index.html?4.for i in {1..5000}5.do6.    URL=${URL}v$i=$i7.done8.curl $URL9.[root@proxy ~]# ./buffer.sh五、浏览器本地缓存静态数据1)使用Firefox浏览器查看缓存以Firefox浏览器为例,在Firefox地址栏内输入about:cache将显示Firefox浏览器的缓存信息,如图所示,点击List Cache Entries可以查看详细信息。

2)清空firefox本地缓存数据,如图所示。

3)改Nginx配置文件,定义对静态页面的缓存时间1.[root@proxy ~]# vim /usr/local/nginx/conf/nginx.conf2.server {3.        listen       80;4.        server_name  localhost;5.        location / {6.            root   html;7.            index  index.html index.htm;8.        }9.location ~* \.(jpg|jpeg|gif|png|css|js|ico|xml)$ {10.expires        30d;            //定义客户端缓存时间为30天11.}12.}13.[root@proxy ~]# cp /usr/share/backgrounds/day.jpg /usr/local/nginx/html14.[root@proxy ~]# /usr/local/nginx/sbin/nginx -s reload15.#请先确保nginx是启动状态,否则运行该命令会报错,报错信息如下:16.#[error] open() '/usr/local/nginx/logs/nginx.pid' failed (2: No such file or directory)4)优化后,使用Firefox浏览器访问图片,再次查看缓存信息1.[root@client ~]# firefox http://192.168.4.5/day.jpg在firefox地址栏内输入about:cache,查看本地缓存数据,查看是否有图片以及过期时间是否正确。— 本文结束 —

(0)

相关推荐

  • Nginx学习

    什么是nginx? Nginx是一款轻量级的Web 服务器/反向代理服务器及电子邮件(IMAP/POP3)代理服务器,在BSD-like 协议下发行.其特点是占有内存少,并发能力强,事实上nginx的 ...

  • Linux学习10-CentOS搭建nginx负载均衡环境

    前言 当自己的web网站访问的人越来越多,一台服务器无法满足现有的业务时,此时会想到多加几台服务器来实现负载均衡. 网站的访问量越来越大,服务器的服务模式也得进行相应的升级,怎样将同一个域名的访问分散 ...

  • Seafile Pro 8 在CentOS 7上的部署

    前置要求:机器内存必须大于2G 安装环境: CentOS 7.6.1810(Core) 8G ECC DDR4 内存 160G SSD RAID 0 6 vCPU KVM 架构 开启BBR plus加 ...

  • Nginx

    Nginx基本简述 Nginx软件介绍 Nginx是一个开源且高性能.可靠的HttpWeb服务.代理服务. 开源: 直接获取源代码 高性能: 支持海量并发 可靠: 服务稳定 如果你听说或使用过 Apa ...

  •  获取免费的ssl证书并部署到nginx上面

    前言 https协议一看就觉得逼格高端.很早时候就想做一个来玩玩了. 现在有机会了 感谢 咖菲猫-李常明笔记 的 certbot在Centos7上配置合法签名证书,实现nginx的https访问 本文 ...

  • 十万上车,半年以一换二,兼顾学区和优化配置

    成都学区房已获授权. 我跟溜爸.猫爸相识于2019年4月下旬,一直想投稿来的,但因忙工作又带俩娃一拖再拖,直到学区房公众号发了这篇文章. <改善盘.名校集团扎堆的青羊新城,该低调吗?> 恰 ...

  • 论文|万物皆可Vector之Word2vec:2个模型、2个优化及实战使用

    本主题文章将会分为三部分介绍,每部分的主题为: word2vec的前奏-统计语言模型(点击阅读) word2vec详解-风华不减 其他xxx2vec论文和应用介绍 后续会更新Embedding相关的文 ...

  • 大佛:不同资金规模家庭资产的优化配置!

    当下理财市场的投资方式各种各样,包括股票.基金.黄金.外汇.房产.保险等.为了使资金增值,作为一名普通投资者,应当如何进行投资?针对不同资金规模的家庭,以及不同理财资金的需求,我们对10万.20万.5 ...

  • Nginx限流配置

    在上一篇文章Nginx负载均衡配置中,我们已经介绍了关于nginx的安装与nginx负载均衡配置相关的知识,今天主要讲讲nginx是如何限流的. 随着业务的扩散,系统并发越来越高时,有三样利器用来保护 ...

  • Nginx安全加固配置手册

    第1章   概述 1.1   目标 Nginx(发音同engine x)是一款轻量级的Web服务器/反向代理服务器及电子邮件(IMAP/POP3)代理服务器,由俄罗斯的程序设计师Igor Sysoev ...

  • Windows Server 2012 NIC Teaming配置实战

    以往在WINDOWS SERVER上配置NIC时,例如WINDOWS SERVER 2003或2008上一般需要安装厂商的网卡聚合绑定软件,厂商软件针对自己系列的网卡设备支持的较好,但如果一个物理服务 ...

  • 清华大学熊宇峰、司杨 等:基于主从博弈的工业园区综合能源系统氢储能优化配置

    团队介绍 熊宇峰 硕士研究生,主要研究方向为新能源发电及氢储能技术. 司杨 博士研究生,研究方向为新能源综合利用. 郑天文 副研究员/高级工程师,博士,研究方向为压缩空气储能及智慧能源网.储能.新能源 ...

  • 曹志安委员:加强跨省区能源资源优化配置 助力实现“碳达峰、碳中和”目标

    2021年政府工作报告提出,扎实做好碳达峰.碳中和各项工作.制定2030年前碳排放达峰行动方案.优化产业结构和能源结构. 曹志安说: '碳达峰.碳中和'目标的提出,彰显了我国坚定不移走绿色发展道路的雄 ...

  • Nginx负载均衡配置误区

    之前有很多朋友问关于Nginx的upstream模块中max_fails及fail_timeout,这两个指令,分别是配置关于负载均衡过程中,对于上游(后端)服务器的失败尝试次数和不可用时间,很多人不 ...