通过配置文件的方式对Nginx进行调优

有以下五种方式进行相对应的调优操作

1、启用Gzip压缩

网站请求资源的时候,如果没有对文件进行过压缩,会急剧消耗大量的请求带宽,传输了大量的数据

可以在配置文件中进行开启

  1. gzip on; #开启压缩
  2. gzip_types application/xml #设置压缩类型
  3. application/json
  4. text/css
  5. text/javascript
  6. application/javascript;
  7. gzip_vary on;
  8. gzip_comp_level 6;
  9. gzip_min_length 500;

2、设置缓存头

浏览器浏览网页时,会将副本保存在本地磁盘缓存中,
可以在HTTP请求头中设置缓存控制和过期标头,以提高浏览器的缓存行为的效率,
从而减少很多不必要的http请求

一些不经常更改的资源可以设置较长的缓存时间
例如字体,图片等可以设置较长的缓存时间

  1. location ~* \.(?:jpg|jpeg|gif|png|ico|woff2)$ {
  2. expires 1M;
  3. add_header Cache-Control "public";
  4. }

3、启用HTTP2协议

HTTP2协议是用于服务网页的下一代协议,旨在更好的利用网络和主机服务器,他可以更快的加载页面内容和处理请求

在 Nginx 配置文件的 listen 指令上包含 http2 参数,即可。需要请注意的是,在大多数情况下,还需要启用 TLS 才能正常使用 HTTP/2 协议。

  1. listen 443 ssl http2;

4、优化日志

通过减少不必要的日志记录,可以节省服务器上的磁盘存储,CPU和IO

4.1、页面请求资源的日志记录

如果没有特定的图片资源,JS文件,CSS文件需要记录,那么可以在匹配这些资源的请求中禁用日志记录

  1. location ~* \.(?:jpg|jpeg|gif|png|ico|woff2|js|css)$ {
  2. access_log off;
  3. }

4.2、禁用成功请求的日志记录

如果请求成功,就不再计入日志,仅仅记录错误请求

  1. map $status $loggable {
  2. ~^[23] 0;
  3. default 1;
  4. }
  5. access_log /var/log/nginx/access.log combined if=$loggable;

4.3、最小化IO操作

可以打开访问日志缓冲来最大程度的减少IO操作,使用此指令,Nginx 将等待将日志数据写入磁盘,直到填满 512KB 缓冲区或自上次刷新以来已过了 1 分钟(以先发生者为准)

  1. access_log /var/log/nginx/access.log combined buffer=512k flush=1m;

5、限制带宽

如果服务器有一个较大的文件或者一个下载频率较高的文件,则可以设置客户端的下载最大速度
或者网站已经存在了很高的网络负载,则可以限制下载速度,释放部分带宽

使用 limit_rate 指令来限制特定 URL 的带宽。在这里,我们将 /download 下每个文件的传输速率限制为每秒 50KB 的速度。

  1. location /download/ {
  2. limit_rate 50k;
  3. }

对较大的文件进行速率限制,这可以通过 limit_rate_after 指令进行
每个文件(来自任何目录)的前 500KB 都不受速度限制地进行传输,之后的所有内容均以 50KB/s 的速度为上限。这样可以加快网站关键部分的交付速度,同时降低其他部分的速度

  1. location / {
  2. limit_rate_after 500k;
  3. limit_rate 50k;
  4. }

速率限制适用于浏览器和 Nginx 之间的单个 HTTP 连接,因此请不要阻止用户使用下载管理器来绕开速率限制