nginx緩存設置

目的:緩存nginx服務器的靜態文件。如css,js,htm,html,jpg,gif,png,flv,swf,這些文件都不是經常更新。便於緩存以減輕服務器的壓力。
實現:nginx proxy_cache可以將用戶的請緩存到本地一個目錄,當下一個請求時可以直接調取緩存文件,就不用去後端服務器去取文件了。
配置:打開配置文件/usr/local/nginx/conf/nginx.conf

user  www www;
worker_processes 2;
error_log  /var/log/nginx_error.log  crit;
worker_rlimit_nofile 65535;
events
{
 use epoll;
 worker_connections 65535;
}

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

 server_names_hash_bucket_size 128;
 client_header_buffer_size 32k;
 large_client_header_buffers 4 32k;
 client_max_body_size 8m;

 sendfile on;
 tcp_nopush     on;
 keepalive_timeout 0;
 tcp_nodelay on;

 fastcgi_connect_timeout 300;
 fastcgi_send_timeout 300;
 fastcgi_read_timeout 300;
 fastcgi_buffer_size 64k;
 fastcgi_buffers 4 64k;
 fastcgi_busy_buffers_size 128k;
 fastcgi_temp_file_write_size 128k;
 ##cache##
 proxy_connect_timeout 5;
 proxy_read_timeout 60;
 proxy_send_timeout 5;
 proxy_buffer_size 16k;
 proxy_buffers 4 64k;
 proxy_busy_buffers_size 128k;
 proxy_temp_file_write_size 128k;
 proxy_temp_path /home/temp_dir;
 proxy_cache_path /home/cache levels=1:2 keys_zone=cache_one:200m inactive=1d max_size=30g;
 ##end##


 gzip    on;
 gzip_min_length   1k;
 gzip_buffers   4 8k;
 gzip_http_version  1.1;
 gzip_types   text/plain application/x-javascript text/css  application/xml;
 gzip_disable "MSIE [1-6]\.";

 log_format  access  '$remote_addr - $remote_user [$time_local] "$request" '
            '$status $body_bytes_sent "$http_referer" '
            '"$http_user_agent" $http_x_forwarded_for';
 upstream appserver {
       server 192.168.1.251;
 }
 server {
       listen       80 default;
       server_name www.gangpao.com;
location ~ .*\.(gif|jpg|png|htm|html|css|js|flv|ico|swf)(.*) {
             proxy_pass http://appserver;
             proxy_redirect off;
             proxy_set_header Host $host;
             proxy_cache cache_one;
             proxy_cache_valid 200 302 1h;
             proxy_cache_valid 301 1d;
             proxy_cache_valid any 1m;
             expires 30d;
       }
       location ~ .*\.(php)(.*){
            proxy_pass http://appserver;
            proxy_set_header        Host $host;
            proxy_set_header        X-Real-IP $remote_addr;
            proxy_set_header        X-Forwarded-For $proxy_add_x_forwarded_for;

       }
       access_log /usr/local/nginx/logs/www.gangpao.com.log;
 }
}

紅色部分是配置緩存的參數。
說明:
1、http段設置。
proxy_temp_path /home/temp_dir;設置臨時目錄
proxy_cache_path /home/cache levels=1:2 keys_zone=cache_one:200m inactive=1d max_size=30g;設置緩存目錄爲二級目錄,共享內存區大小,非活動時間,最大容量,注意臨時目錄要跟緩存目錄在同一個分區。
2、server段設置
請求靜態文件設置。
proxy_cache cache_one;設置緩存共享內存區塊,也就是keys_zone名稱。
proxy_cache_valid 200 302 1h;設置http狀態碼爲200,302緩存時間爲1小時。
expires 30d;設置失期時間,爲30天
請求動態文件設置。
proxy_pass http://appserver;不進行緩存,直接轉到後端服務器。
測試:當客戶端發起http請求時在服務器上會產一個緩存文件如

/home/cache/0/b9/8bd841b1c44ee5b91457eb561e44eb90


發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章