Nginx設置靜態頁面壓縮和緩存過期時間的方法


使用nginx服務器的朋友可能都知道需要設置html靜態頁面緩存與頁面壓縮與過期時間的設置了,下面我來給各位同學介紹一下配置方法,包括對ico,gif,bmp,jpg,jpeg,swf,js,css,mp3文件進行本地緩存.

可以通過nginx對服務器上的靜態資源進行過期時間設置和對資源進行壓縮傳輸來減少服務器的帶寬開銷。

以下是nginx對靜態資源過期時間的設置方法:

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

上面的配置可以對ico,gif,bmp,jpg,jpeg,swf,js,css,mp3文件進行本地緩存,不用每次訪問都重新從服務器獲取。

壓縮的配置如下:

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

對文本、js和css文件進行壓縮,一般情況下,壓縮后的大小是原始大小的25%,甚至更小。


緩存動態頁面,緩存過期時間

這里用虛擬機配置了下:

nginx 配置文件內容:

主要是這一句:

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

這一句定義一個區域,名字是 Z ,在內存中的空間為10MB ,硬盤中的最大空間為 30G;

 inactive=1m   是,1分鍾之后緩存失效 ,從新從源服務器請求
這里糾正一下,inactive=1m  如果緩存1分鍾沒人訪問,nginx 會刪除掉這些緩存

/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;
      }
    }
#這里設置當 訪問 /ajax/目錄下的內容時候,直接從源服務器讀取,主要用於ajax 的訪問請求,要求實時的
    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;

 


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM