您的位置:

优化你的Nginx配置以提高网站流量

一、使用缓存来提高网站速度

1、启用缓存

http {
  ...
  proxy_cache_path /var/cache/nginx keys_zone=cache_zone:10m;
  ...
  server {
    ...
    proxy_cache cache_zone;
    proxy_cache_revalidate on;
    proxy_cache_min_uses 3;
    proxy_cache_lock on;
    proxy_cache_valid 200 10m;
    ...
  }
}

2、缓存策略

proxy_cache_valid 200 10m;

上面的配置意味着,当收到状态码为200(成功)的响应时,将响应保存在缓存中并可被下次访问使用,缓存有效时间为10分钟。

3、控制缓存的粒度

http {
  ...
  proxy_cache_path /var/cache/nginx levels=1:2 keys_zone=cache_zone:10m inactive=60m;
  ...
  server {
    ...
    location / {
      proxy_cache_key "$scheme$request_method$host$request_uri";
      proxy_cache_valid 200 302 10m;
      proxy_cache_valid 404      1m;
      proxy_cache_valid any      0m;
      proxy_cache_lock on;
      proxy_cache_bypass $http_pragma;
      proxy_cache_revalidate on;
      ...
    }
  }
}

上面的配置删除了在缓存路径中使用多个级别,转而使用了单级。同时,我们控制了缓存键值(proxy_cache_key)和缓存的有效时间(proxy_cache_valid),以更好地精确控制缓存的使用。

二、使用gzip压缩静态资源

1、启用gzip压缩

http {
  ...
  gzip on;
  gzip_min_length 1000;
  gzip_comp_level 2;
  gzip_types text/plain text/css application/json application/javascript text/xml application/xml application/xml+rss text/javascript;
  gzip_disable "MSIE [1-6]\.";
  ...
}

上面的配置意味着,启用gzip压缩,并设置最小压缩长度、压缩等级、压缩类型以及禁用IE6之前的版本。使用gzip压缩静态资源可以减小页面体积,减少传输时间,提高网站速度。

2、压缩动态内容

http {
  ...
  gzip_proxied any;
  gzip_types text/plain text/css application/json application/javascript text/xml application/xml application/xml+rss text/javascript application/vnd.ms-fontobject font/ttf font/opentype image/svg+xml;
  ...
}

上面的配置意味着,压缩任何类型的内容,并设置压缩类型。这样,可以使动态内容也能够被gzip压缩,提升网站速度。

三、减少HTTP请求次数

1、合并CSS和JS文件

可以通过工具将多个CSS或JS文件合并成一个,从而减少HTTP请求的次数。然后使用以下方法来配置Nginx,让它缓存合并后的文件。这样,当用户再次访问相同页面时,Nginx会直接返回已经合并的文件,而不用再次发起HTTP请求。

http {
  ...
  proxy_cache_path /var/cache/nginx levels=1:2 keys_zone=cache_zone:10m inactive=60m;
  ...
  server {
    ...
    location /combined.js {
      add_header Cache-Control "public, max-age=86400";
      proxy_cache cache_zone;
      proxy_cache_key "$scheme$request_method$host$request_uri";
      proxy_cache_valid 200 302 60m;
      proxy_cache_valid 404 1m;
      proxy_cache_lock on;
      proxy_cache_bypass $http_pragma;
      proxy_cache_revalidate on;
      rewrite ^/combined.js$ /js/combined.js last;
      ...
    }
    location /combined.css {
      add_header Cache-Control "public, max-age=86400";
      proxy_cache cache_zone;
      proxy_cache_key "$scheme$request_method$host$request_uri";
      proxy_cache_valid 200 302 60m;
      proxy_cache_valid 404 1m;
      proxy_cache_lock on;
      proxy_cache_bypass $http_pragma;
      proxy_cache_revalidate on;
      rewrite ^/combined.css$ /css/combined.css last;
      ...
    }
  }
}

2、利用缓存来减少HTTP请求次数

上面已经提到了如何使用缓存来优化网站速度,这里再次强调:缓存可以大大减少HTTP请求次数,从而提高网站速度。因此,在配置Nginx的过程中,请注意缓存的使用。