我的 nginx 安装在 /etc/nginx 下,我在 /etc/nginx/conf.d 中创建了 cache.conf 文件,内容如下:
proxy_temp_path /tmp/nginx_temp;
proxy_cache_path /tmp/nginx_cache levels=1:2 keys_zone=cache_zone1:500m inactive=10d max_size=1g;
proxy_connect_timeout 5;
proxy_read_timeout 60;
proxy_send_timeout 10;
proxy_buffer_size 16k;
proxy_buffers 4 64k;
proxy_busy_buffers_size 128k;
proxy_temp_file_write_size 128k;
proxy_next_upstream error timeout invalid_header http_500 http_502 http_503 http_404;
在 /etc/nginx/nginx.conf 中配置以下内容:
server {
listen 80;
server_name xxx;
root /data/webs;
server_tokens off;
location ~ .*\.(gif|jpg|png|html|htm|css|js|ico|swf|pdf|wof|woff2|svg)$ {
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_pass http://localhost:8080;
proxy_buffering on;
proxy_cache cache_zone1;
proxy_cache_key "$host$request_uri";
add_header Cache "$upstream_cache_status";
proxy_cache_valid 200 304 301 302 100d;
proxy_cache_valid 404 1m;
proxy_cache_valid any 5m;
}
}
server{
listen 8080;
server_name xxx;
charset utf-8;
server_tokens off;
root /data/webs;
location / {
root /data/webs;
index index.html index.html;
}
}
虽然返回的状态显示缓存被读取了,但是每次访问还是需要一些时间来加载,但是加载刷新之后,内容马上渲染出来了还有一个问题是我的html文件更新后,我也删除了缓存配置文件/tmp/nginx_cache,但html内容仍然保持不变。