Nginx优化方案
创始人
2024-01-27 22:46:03
0

目录

一、Nginx返回错误页面

1、HTTP常见状态代码列表

二、Nginx状态页面

1、安装status模块

2、激活status

三、优化并发连接数

1、压力测试软件ab(http-tools)

2、优化并发连接数

2.1、修改nginx并发数

2.2、修改内核最大文件数量

四、Nginx日志分割

五、开启gzip压缩

六、开启文件缓存


一、Nginx返回错误页面

1、HTTP常见状态代码列表

返回码描述
200一切正常            
400请求语法错误
401访问被拒绝(账号或密码错误)
403资源不可用,通常由于服务器上文件或目录的权限设置导致
403禁止访问:如客户端的IP地址被拒绝,无法验证密码
404无法找到指定位置的资源(Not found)
414请求URL头部太长
500服务器内部错误
502服务器作为网关或者代理时,为了完成请求访问下一个服务器,但该服务器返回了非法的应答(Bad Gatwway)

2、自定义错误返回页面

vim /usr/local/nginx/conf/nginx.conf

默认nginx.conf的server下面都有个注释的error_page配置,取消注释,更改为自定义页面或图片就行了:

server {
        listen       80;
        server_name  localhost;

        #charset koi8-r;

        #access_log  logs/host.access.log  main;

        location / {
            root   html;
            index  index.html index.htm;
        }

        error_page  404              /my404.html;    #html可以自定义,但要实际存在

        #error_page  404              /my404.jpg;     #也可以显示图片,选用一个即可

        # redirect server error pages to the static page /50x.html
        #
        error_page   500 502 503 504  /50x.html;
        location = /50x.html {
            root   html;
        }

... ...

}

【注】:上面的my404.html和my404.jpg文件前面的“/”不是系统的跟目录,而是nginx的html的根目录,即/usr/local/nginx/html/下

/usr/local/nginx/sbin/nginx -s reload

客户端测试:访问一个不存在的地址:

 返回图片:

二、Nginx状态页面

1、安装status模块

nginx编译安装时./confiugre后面需要添加--with-http_stub_status_module开启模块功能,该模块可以查看Nginx连接数等信息

Nginx安装参考:Nginx安装、升级与基础配置_桂安俊@kylinOS的博客-CSDN博客

2、激活status

vim /usr/local/nginx/conf/nginx.conf

新增一个location,用于访问status:

server {
        listen       80;
        server_name  localhost;

        
        location /status {
            stub_status on;

            #allow  IP;     #可设置限制访问

            #deny all;
        }

        location / {
            root   html;
            index  index.html index.htm;
        }

/usr/local/nginx/sbin/nginx -s reload

客户端测试:浏览器访问192.168.1.20/status

【参数说明】:

Active connections:当前活动的连接数量,实时并发量

Accepts:已经接受客户端的连接总数量,三次握手建立

Handled:已经处理客户端的连接总数量,一般与accepts一致,除非服务器限制了连接数量

Requests:客户端发送的请求数量

Reading:当前服务器正在读取的客户端请求头的数量

Writing:当前服务器正在写响应信息的数量

Waiting:当前多少客户端在等待服务器的响应

三、优化并发连接数

1、压力测试软件ab(http-tools)

yum -y install httpd-tools#-c后面代表总人数,-n后面代表总访问量,如下即模拟100个人共访问100次,即平均一人访问一次
#所以-c的值必须要大于等于-n的值,不然会报语法错误,且网址最后面必须以“/”斜线结尾,否则也会报语法错误
ab -c 100 -n 100 http://192.168.1.20/ab -c 2000 -n 2000 http://192.168.1.20/

测试:

100人100次模拟访问:

ab -c 100 -n 100 http://192.168.1.20/

2000人2000次模拟访问:

ab -c 2000 -n 2000 http://192.168.1.20/

 如上可以看到2000人2000次访问报错了,这时候就需要优化Nginx,以满足更高并发量。

2、优化并发连接数

2.1、修改nginx并发数

vim /usr/local/nginx/conf/nginx.conf

worker_processes  2;                    #启动多少个nginx worker进程,需要与CPU核心数量一致


events {
    worker_connections  50000;     #每个nginx worker进程能够支持的最大并发连接数量
}

/usr/local/nginx/sbin/nginx -s reload

2.2、修改内核最大文件数量

除此以外还要修改内核参数,修改最大文件数量:

ulimit -a

 可以看到默认最大文件打开数是1024。

a、临时修改:

ulimit -n 100000    #临时修改最大文件打开数,重启系统失效

b、永久修改:

vim /etc/security/limits.conf  #永久修改,需重启生效

新增如下内容:

*           soft        nofile       100000
*           hard       nofile       100000

#格式说明:用户或组   软限制或硬限制   项目    值

#其中soft软限制是可以突破的,hard硬限制是不可以突破的,nofile代表最大文件打开数量

再次客户端高并发测试,可以完成2000并发:

ab -c 2000 -n 2000 http://192.168.1.20/

四、Nginx日志分割

脚本日志切割

vim /usr/local/nginx/logbak.sh
#!/bin/bash
date=`date +%Y%m%d`
logpath=/usr/local/nginx/logs
mv $logpath/access.log $logpath/access-$date.log
mv $logpath/error.log $logpath/error-$date.log
kill -USR1 $(cat $logpath/nginx.pid)    #这里的kill不是杀死进程,是生成新的日志文件

设置定时任务,比如每周五03点03分自动执行脚本完成日志切割:

crontab  -e
03 03 * * 5 /usr/local/nginx/logbak.sh

五、开启gzip压缩

如果是访问很多图片内容网站,如果不压缩,直接不压缩传递,就会占用很多流量并且传输很慢。

开启压缩功能:

http {... ...gzip  on;                      #开启压缩gzip_min_length 1000;          #小文件不压缩,如满足1000字节之后才压缩,小文件越压缩反而越大gzip_comp_level   4;           #压缩比率,压缩比率太大会导致压缩时间长gzip_types   text/plain text/css application/json application/x-javascript text/xml application/xml application/xml+rss text/javascript;    #对特定文件压缩,类型参考mime.types文件,在/usr/local/nginx/conf/mime.types... ...}

【注】mime.types说明,后面是文件格式类型,前面为对应gzip_types,填写前面的:

【说明】这里是压缩,解压得话是浏览器完成,几乎所有得浏览器都支持自动解压。

六、开启文件缓存

使用内存缓存磁盘中的文件,html页面是存放在/usr/local/nginx/html目录下的,这是存放在硬盘上的,如果把用户经常访问的html页面缓存到内存中,那访问速度可以更快。

修改如下,开启文件缓存:

vim /usr/local/nginx/conf/nginx.conf
http {... ...open_file_cache    max=2000  inactive=20s;   #设置服务器内存中最大缓存2000个句柄,关闭20秒内无请求的文件句柄,从内存中清除open_file_cache_valid   60s;       #文件句柄的最长有效时间是60秒,60秒后过期,不管是不是一直被访问,这样防止硬盘html修改了内容,但是一直缓存在内存中的html没有更新,导致用户访问的页面一直没更新open_file_cache_min_uses   5;      #只有访问次数超过5次会被缓存open_file_cache_errors    off;     #内存缓存html过期,用户访问内存html找不到会报错,但是硬盘html是有的,这里是关闭缓存文件错误... ...
}

相关内容

热门资讯

农村六个创业项目 最适合农村的... 洗一套衣服只需2元左右的成本,收费10元,翻新、清洗一件皮衣成本1-2元,收50-80元,日收活在5...
亳州炒货机小本创业首选项目 亳... 炒货机亳州炒货机,宿州炒货机小本创业首选项目致诚机械板栗机厂专业生产、批发、供应、销售各款炒板栗机器...
市场空亳州炒货机小本创业首选项... 创业俨然成为了当今社会致富的主要途径,而创业的风险又是让很多投资者忌惮。为了降低风险又不至于错过这个...
成都女人做什么创业项目比较好推... 成都女人做什么创业项目比较好推荐对于一个普通创业者来说,在选择项目的时候,一定要考虑自己的兴趣所在。...
创业小本项目有哪些 创业小本项... 2019小本创业项目有哪些呢?创业首先就是要确定一个好的创业项目,有了好的创业项目创业就会事半功倍,...
适合小本创业的项目有哪些?推荐... 最近个人定制产品很火热,个性化私人订制产品是一个非常好的创业项目,是一个适合想要自己创业做小生意的挣...
现在什么项目好做 【行业吧】 ... 80后创业怎么能大钱,80后自主创业成为很多想要创业的人的疑问,下面渠道小编辑现在什么项目好做?16...
适合小本创业的项目有哪些 适合... 可以开一个小吃店,随着旅游业的发展,各地有名的小吃也得到了许多人的喜爱。做小吃,一定要有特色。。。你...
小本创业涨收入好项目 小本创业... 小本投资项目都有哪些,小本投资项目大全,想知道有哪些小本涨收入投资项目吗,想知道这些小本投资涨收入项...
这8个高收入小本创业项目 你绝... 劣势:这种小规模家庭型的宠物配种业,由于场地,规模,客源,配种周期等因素,年投资回报不是太高。结论:...