Nginx methods for setting static page compression and cache expiration times

  • 2020-05-09 19:56:25
  • OfStack

Using nginx server friends may know that you need to set up html static page caching and compression and the expiration time set, let me to introduce to the classmate 1 configuration method, including the ico, gif, bmp, jpg, jpeg, swf, js, css, mp3 file to the local cache.

You can use nginx to set the expiration time of static resources on the server and compress the transfer of resources to reduce the bandwidth cost of the server.

Here's how nginx sets the expiration time of a static resource:


    location ~* .(ico|gif|bmp|jpg|jpeg|png|swf|js|css|mp3) {
      root  /var/www/opkeep;
      expires 30d;
    }


The above configuration can be ico gif, bmp, jpg, jpeg, swf, js, css, mp3 file to the local cache, need not back from the server every time you visit.

The configuration of the compression is as follows:


    gzip on;
    gzip_min_length 1000;
    gzip_buffers   4 8k;
    gzip_types    text/plain application/x-javascript text/css;


Text, js, and css files are compressed to a size of 25% or less of the original size in the case of 1.


Cache dynamic pages, cache expiration time

The following are configured with the virtual machine:

Content of nginx configuration file:

This is the main sentence:


proxy_cache_path /www/ levels=1:2 keys_zone=Z:10m inactive=1m max_size=30g;

This sentence defines a region, Z, with a space of 10MB in memory and a maximum space of 30G on the hard disk.

  inactive=1m     is, 1 minute after the cache expires, request from the source server again
So if I correct 1 here, inactive=1m   if the cache is not accessed for 1 minute, nginx will delete these caches

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


#user nobody;
worker_processes 1;

#error_log logs/error.log;
#error_log logs/error.log notice;
#error_log logs/error.log info;

#pid    logs/nginx.pid;


events {
  worker_connections 1024;
}


http {
  include    mime.types;
  default_type application/octet-stream;

  #log_format main '$remote_addr - $remote_user [$time_local] "$request" '
  #         '$status $body_bytes_sent "$http_referer" '
  #         '"$http_user_agent" "$http_x_forwarded_for"';

  #access_log logs/access.log main;

  sendfile    on;
  #tcp_nopush   on;

  #keepalive_timeout 0;
  keepalive_timeout 65;

  #gzip on;
  proxy_cache_path /www/ levels=1:2 keys_zone=Z:10m inactive=1m max_size=30g;
  server {
    listen    80;
    server_name localhost;

    #charset koi8-r;

    #access_log logs/host.access.log main;

    location / {
      root  /www/;
   #expires max;

      #proxy_store on;
      #proxy_store_access user:rw group:rw all:rw;
      #proxy_temp_path /www/;
   proxy_cache Z;
   proxy_cache_valid 200 1m;
      #expires max;
      include proxy.conf;
 
      if ( !-e $request_filename) {
      proxy_pass http://192.168.1.199:45815;
      }
    }
# So I'm going to set when   access  /ajax/ The contents of the directory are read directly from the source server ajax  Request for real-time access 
    location /ajax/ {

      include proxy.conf;
      if ( !-e $request_filename) {
      proxy_pass http://192.168.1.199:45815;
      }
    }

    #location ~.*.(jpg|png|jpeg|gif)
    #{
 #  expires max;
    #}

    #error_page 404       /404.html;

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

    # proxy the PHP scripts to Apache listening on 127.0.0.1:80
    #
    #location ~ .php$ {
    #  proxy_pass  http://127.0.0.1;
    #}

    # pass the PHP scripts to FastCGI server listening on 127.0.0.1:9000
    #
    #location ~ .php$ {
    #  root      html;
    #  fastcgi_pass  127.0.0.1:9000;
    #  fastcgi_index index.php;
    #  fastcgi_param SCRIPT_FILENAME /scripts$fastcgi_script_name;
    #  include    fastcgi_params;
    #}

    # deny access to .htaccess files, if Apache's document root
    # concurs with nginx's one
    #
    #location ~ /.ht {
    #  deny all;
    #}
  }


  # another virtual host using mix of IP-, name-, and port-based configuration
  #
  #server {
  #  listen    8000;
  #  listen    somename:8080;
  #  server_name somename alias another.alias;

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


  # HTTPS server
  #
  #server {
  #  listen    443;
  #  server_name localhost;

  #  ssl         on;
  #  ssl_certificate   cert.pem;
  #  ssl_certificate_key cert.key;

  #  ssl_session_timeout 5m;

  #  ssl_protocols SSLv2 SSLv3 TLSv1;
  #  ssl_ciphers HIGH:!aNULL:!MD5;
  #  ssl_prefer_server_ciphers  on;

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

}

/usr/local/nginx/conf/proxy.conf


proxy_redirect     off;
proxy_set_header    Host $host;
proxy_set_header    X-Real-IP $remote_addr;
proxy_set_header    X-Forwarded-For $proxy_add_x_forwarded_for;
proxy_set_header    Accept-Encoding 'gzip';
client_max_body_size  100m;
client_body_buffer_size 256k;

proxy_connect_timeout  60;
proxy_send_timeout   60;
proxy_read_timeout   60;

proxy_buffer_size    512k;
proxy_buffers      8 512k;
proxy_busy_buffers_size 512k;
proxy_temp_file_write_size 512k;

The html file can be cached and then asked in many places


Related articles: