通过配置文件的方式对Nginx进行调优
1、启用Gzip压缩
网站请求资源的时候,如果没有对文件进行过压缩,会急剧消耗大量的请求带宽,传输了大量的数据
可以在配置文件中进行开启
gzip on; #开启压缩
gzip_types application/xml #设置压缩类型
application/json
text/css
text/javascript
application/javascript;
gzip_vary on;
gzip_comp_level 6;
gzip_min_length 500;
2、设置缓存头
浏览器浏览网页时,会将副本保存在本地磁盘缓存中,
可以在HTTP请求头中设置缓存控制和过期标头,以提高浏览器的缓存行为的效率,
从而减少很多不必要的http请求
一些不经常更改的资源可以设置较长的缓存时间
例如字体,图片等可以设置较长的缓存时间
location ~* \.(?:jpg|jpeg|gif|png|ico|woff2)$ {
expires 1M;
add_header Cache-Control "public";
}
3、启用HTTP2协议
HTTP2协议是用于服务网页的下一代协议,旨在更好的利用网络和主机服务器,他可以更快的加载页面内容和处理请求
在 Nginx 配置文件的 listen 指令上包含 http2 参数,即可。需要请注意的是,在大多数情况下,还需要启用 TLS 才能正常使用 HTTP/2 协议。
listen 443 ssl http2;
4、优化日志
通过减少不必要的日志记录,可以节省服务器上的磁盘存储,CPU和IO
4.1、页面请求资源的日志记录
如果没有特定的图片资源,JS文件,CSS文件需要记录,那么可以在匹配这些资源的请求中禁用日志记录
location ~* \.(?:jpg|jpeg|gif|png|ico|woff2|js|css)$ {
access_log off;
}
4.2、禁用成功请求的日志记录
如果请求成功,就不再计入日志,仅仅记录错误请求
map $status $loggable {
~^[23] 0;
default 1;
}
access_log /var/log/nginx/access.log combined if=$loggable;
4.3、最小化IO操作
可以打开访问日志缓冲来最大程度的减少IO操作,使用此指令,Nginx 将等待将日志数据写入磁盘,直到填满 512KB 缓冲区或自上次刷新以来已过了 1 分钟(以先发生者为准)
access_log /var/log/nginx/access.log combined buffer=512k flush=1m;
5、限制带宽
如果服务器有一个较大的文件或者一个下载频率较高的文件,则可以设置客户端的下载最大速度
或者网站已经存在了很高的网络负载,则可以限制下载速度,释放部分带宽
使用 limit_rate 指令来限制特定 URL 的带宽。在这里,我们将 /download 下每个文件的传输速率限制为每秒 50KB 的速度。
location /download/ {
limit_rate 50k;
}
对较大的文件进行速率限制,这可以通过 limit_rate_after 指令进行
每个文件(来自任何目录)的前 500KB 都不受速度限制地进行传输,之后的所有内容均以 50KB/s 的速度为上限。这样可以加快网站关键部分的交付速度,同时降低其他部分的速度
location / {
limit_rate_after 500k;
limit_rate 50k;
}
速率限制适用于浏览器和 Nginx 之间的单个 HTTP 连接,因此请不要阻止用户使用下载管理器来绕开速率限制