先留个坑,目前使用了proxy_store对图片进行缓存。

好像可以使用memcach对动态页面进行缓存。另外还得学习redis~


# 配置文件主要添加了三行:
proxy_cache_path /usr/local/nginx/cache levels=1:2 keys_zone=cache_one:500m inactive=1d max_size=30g;
 
proxy_cache_path:表示缓存文件存放的路径,该路径是预先就要创建好的
levels=1:2 : 设置在相对于path指定目录的第几级hash目录中缓存数据,levels=1,表示一级hash目录,levels=1:2,表示两级hash目录,目录的名称是基于请求URL通过哈希算法得到的
keys_zone=cache_one:500m : 设置缓存名字
inactive=1d : 强制更新时间,在指定时间内没人访问,就删除缓存
max_size=30g : 设置硬盘中缓存数据的大小限制,最大缓存空间
 
proxy_cache cache_one;
# 表示这个server使用上面设置的那个cache
 
proxy_cache_valid 200 304 302 24h;
# 针对不同的HTTP响应状态设置不同的缓存时间,如果不设置,nginx服务器只为HTTP状态代码为200,301和302的响应数据做缓存
# 使用any可以表示缓存所有该指令中未设置的其他响应数据,如:
proxy_cache_valid 200 302 10m;
proxy_cache_valid 301 1h;
proxy_cache_valid any 1m;
# 表示的是对返回状态为200,302的响应数据缓存10分钟,对返回状态码为301的响应数据缓存1小时,非200,302,301返回状态的响应数据缓存1分钟


# /etc/nginx/nginx.conf
http {
  ###
    proxy_temp_path /etc/nginx/proxy_temp;   
    proxy_cache_path /etc/nginx/proxy_cache levels=1:2 keys_zone=cache_one:200m inactive=5d max_size=1g;
    inactive=5d max_size=1g;
    proxy_ignore_headers X-Accel-Expires Expires Cache-Control Set-Cookie;

}


 upstream sample {
    server 127.0.0.1:3000;
    keepalive 64;
}
#server {
#      listen 80;
#      server_name kacoro.com www.kacoro.com;
#      location / {
#          proxy_redirect off;
#          proxy_set_header X-Real-IP $remote_addr;
#          proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
#          proxy_set_header X-Forwarded-Proto $scheme;
#          proxy_set_header Host $http_host;
#          proxy_set_header X-NginX-Proxy true;
#          proxy_set_header Connection "";
#          proxy_http_version 1.1;
#          proxy_pass http://sample;
#      }
#}
server {
    listen 443;
    server_name kacoro.com www.kacoro.com;
    location / {
          proxy_redirect off;
          proxy_set_header X-Real-IP $remote_addr;
          proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
          proxy_set_header X-Forwarded-Proto $scheme;
          proxy_set_header Host $http_host;
          proxy_set_header X-NginX-Proxy true;
          proxy_pass http://sample;
      }
      location ~ .*\.(css|js)$ {
        proxy_cache cache_one;
            proxy_cache_valid 200 304 302 2d;
            proxy_cache_valid any 1d;
            proxy_cache_key $host$uri$is_args$args;
            add_header X-Cache '$upstream_cache_status from $host';
            proxy_redirect          off;
            proxy_set_header        X-Real-IP $remote_addr;
            proxy_set_header        X-Forwarded-For $proxy_add_x_forwarded_for;
            proxy_set_header Host $http_host;
            proxy_set_header X-NginX-Proxy true;
            proxy_pass http://sample;
            expires 30d;
      }
      location ~ .*\.(gif|jpg|jpeg|png|bmp|swf)$ {
            expires 24h;
            proxy_pass http://sample;
            access_log /data/nginx/logs/images.log;
            proxy_store on;
            proxy_store_access user:rw group:rw all:rw;
            proxy_redirect          off;
            proxy_set_header X-Real-IP $remote_addr;
            proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
            proxy_set_header X-Forwarded-Proto $scheme;
            proxy_set_header Host $http_host;

            client_max_body_size    10m;
            client_body_buffer_size 1280k;
            proxy_connect_timeout   900;
            proxy_send_timeout      900;
            proxy_read_timeout      900;
            proxy_buffer_size       40k;
            proxy_buffers           40 320k;
            proxy_busy_buffers_size 640k;
            proxy_temp_file_write_size 640k;
        }
}

server {
    listen 80;
    server_name kacoro.com www.kacoro.com;
    rewrite ^(.*)$ https://$host$1 permanent;
}


#user  nginx;
worker_processes  1;

error_log  /var/log/nginx/error.log;

pid /var/run/nginx.pid;


events {
    use epoll;
    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 压缩传输
    gzip on;
    gzip_min_length 1k;
    gzip_buffers    4 16k;
    gzip_http_version 1.0;
    gzip_comp_level 2;
    gzip_types text/plain application/x-javascripttext/css application/xml;
    gzip_vary on;
    #配置代理参数
    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_connect_timeout 90;
    proxy_read_timeout 90;
    proxy_send_timeout 90;
    proxy_buffer_size 4k;
    #缓存配置
    proxy_temp_file_write_size 264k;
    proxy_temp_path /mnt/nginx_temp;
    proxy_cache_path /mnt/nginx_cache levels=1:2 keys_zone=cache_one:200m inactive=5d max_size=400m;
    proxy_ignore_headers X-Accel-Expires Expires Cache-Control Set-Cookie;  

    server {
        listen       80;
        server_name  www.nginx2.com;
        #静态文件nginx处理并缓存
        location ~ .*\.(htm|html|gif|jpg|jpeg|png|bmp|swf|ioc|ico|rar|zip|txt|flv|mid|doc|ppt|pdf|xls|mp3|wma|css|js)$ {
            proxy_cache cache_one;
            proxy_cache_valid 200 304 302 2d;
            proxy_cache_valid any 1d;
# 以域名、URI、参数组合成Web缓存的Key值,Nginx根据Key值哈希,存储缓存内容到二级缓存目录内
            proxy_cache_key $host$uri$is_args$args; 
            add_header X-Cache '$upstream_cache_status from $host'; 
            proxy_pass http://127.0.0.1:8088;
            expires 30d;
        }
        #其他页面反向代理到tomcat容器
        location ~ .*$ {
            proxy_pass http://127.0.0.1:8080;
            proxy_cookie_path /nginx1/ /;
        }


    }

    server{
        listen 8088;
        location ~ .*\.(htm|html|gif|jpg|jpeg|png|bmp|swf|ioc|ico|rar|zip|txt|flv|mid|doc|ppt|pdf|xls|mp3|wma|css|js)$ {
            #所有静态文件直接读取硬盘
            root /opt/apache-tomcat-7.0.64/webapps/nginx1;
            expires 30d;
        }
    }
}



#一些静态资源的缓存头
accept-ranges:bytes
access-control-allow-origin:*
access-control-expose-headers:*
age:1
cache-control:public, max-age=31536000, s-maxage=31536000, immutable
content-encoding:gzip
content-length:19740
content-type:text/css; charset=utf-8
date:Wed, 18 Sep 2019 11:14:11 GMT
etag:W/"1d970-ZSfYvz4ek2i6uMe2D1a8Afo6/Wg"
jsd-meta:1552350432311, 074d6568d604, pr, /d/2019-02-07/19-26-08.583Z-WyJucG0iLCJib290c3RyYXAiLCIvZGlzdC9jc3MvYm9vdHN0cmFwLm1pbi5jc3MiLCIzLjMuNyJd, 0
status:200
timing-allow-origin:*
x-content-type-options:nosniff
x-served-by:cache-ams21039-AMS, cache-hkg17924-HKG
x-via:1.1 VM-HND-01ITg138:2 (Cdn Cache Server V2.0), 1.1 PSrbdjTYO3qn173:4 (Cdn Cache Server V2.0)

0条评论