美文网首页
Nginx静态缓存配置

Nginx静态缓存配置

作者: 寄居他乡 | 来源:发表于2019-07-25 09:55 被阅读0次

Nginx 静态缓存配置方法

我们需要用到nginx两个缓存模块Expires和proxy_cache。Nginx可以更改HTTP头部,这个是Web服务器必须的,当然Nginx更可以支持在HTTP头部中添加Expires等相关信息,增强浏览器缓存,是网页加载速度增强。proxy_cache模块用于反向代理使用, 加上第三方的ngx_cache_purge模块(用于清除指定URL的缓存)效果更好,已经可以完全取代Squid。(fastcgi_cache主要用于对FastCGI的动态程序进行缓存。)

下面先说Expires的使用方法,在nginx的web的配置里边nginx.conf的server标签下添加如下代码:
location ~ .*.(gif|jpg|jpeg|png|bmp|swf){ expires 365d; } location ~ .*\.(js|css)?{
expires 3d;
}
重启nginx服务即可。

第二部分是proxy_cache 的缓存,这部分缓存放在nginx代理服务器的nginx.conf里边;
主要参数说明:
proxy_set_header Host host; #将用户请求的主机名,对应抛给相应虚拟主机 proxy_set_header X-Forwarded-Forremote_addr; #将客户端 IP传给web服务器
proxy_temp_path /home/proxy_temp_dir; #指定临时文件目录

proxy_cache_path /home/proxy_cache_dir levels=1:2 keys_zone=cache_one:50m inactive=1d max_size=

1g;

设置Web缓存区名称为cache_one,内存缓存为50MB,自动清除1天内没有被访问的文件,硬盘缓存为1GB。

client_body_buffer_size 512k; #增加缓冲区代理缓冲客户端请求的最大字节数
proxy_connect_timeout 60; #连接后端服务器超时时间
proxy_read_timeout 60; #后端服务器响应请求超时时间(向web访问)
proxy_send_timeout 60; #后端服务器发送数据超时时间
proxy_buffer_size 32k; #代理请求缓存区大小
proxy_buffers 4 64k; #设置缓冲区的数量和大小,nginx向后端获取信息的响应信息,回放置到缓冲区
proxy_busy_buffers_size 128k; #系统繁忙时可申请的proxy_buffers大小
proxy_temp_file_write_size 128k; #proxy缓存临时文件的大小,硬盘缓存,官方建议buffers*2。
proxy_next_upstream error timeout invalid_header http_500 http_503 http_404; #增加故障转移,如果后端的服务器返回502、504、执行超时等错误,自动将请求转发到upstream负载均衡池中的另一台服务器,实现故障转移。

proxy_cache cache_one; #增加使用web缓存区cache_one

具体nginx.conf配置文件:
[root@lb01 ~]#cat /application/nginx/conf/nginx.conf

worker_processes 1;
events {
worker_connections 1024;
}
http {
include mime.types;
default_type application/octet-stream;
log_format main 'remote_addr -remote_user [time_local] "request" '
'statusbody_bytes_sent "http_referer" ' '"http_user_agent" "http_x_forwarded_for" "server_addr"';
sendfile on;
keepalive_timeout 65;
include proxy.conf;
upstream static_pools {

ip_hash;

server 192.168.109.161:80  weight=3;
#server 127.0.0.1:8080 backup;

}

upstream dynamic_pools {
server 192.168.109.179 weight=3 max_fails=2 fail_timeout=2;
}

server {
    listen       80;
    server_name  www.bao.com;
      add_header X-Via $server_addr;
     add_header X-Cache $upstream_cache_status;
   proxy_set_header Host $host;
  proxy_set_header X-Forwarded-For $remote_addr;

location / {
proxy_pass http://dynamic_pools;
include proxy.conf;
}

location ~ /purge(/.) {
access_log logs/PalmHall_khl1.log main;
allow 172.18.10.163;
allow all;
proxy_cache_purge cache_one host1is_argsargs;
}
location ~
^.*.(js|ico|gif|jpg|jpeg|png)$ {
access_log logs/PalmHall_khl.log main;
proxy_pass http://static_pools;
proxy_redirect off;
proxy_cache cache_one;
proxy_cache_valid 200 302 10m;
60,45 80%

location / {

proxy_pass http://static_pools;

include proxy.conf;

proxy_cache cache_one;

proxy_set_header Host $host;

}

   proxy_set_header Host $host;
  proxy_set_header X-Forwarded-For $remote_addr;

location / {
proxy_pass http://dynamic_pools;
include proxy.conf;
}

location ~ /purge(/.) {
access_log logs/PalmHall_khl1.log main;
allow 172.18.10.163;
allow all;
proxy_cache_purge cache_one host1is_argsargs;
}
location ~
^.*.(js|ico|gif|jpg|jpeg|png)$ {
access_log logs/PalmHall_khl.log main;
proxy_pass http://static_pools;
proxy_redirect off;
proxy_cache cache_one;
proxy_cache_valid 200 302 10m;
proxy_cache_valid 301 1d;
proxy_cache_valid 404 1m;
proxy_cache_valid any 5m;

proxy_set_header Host $host;

proxy_set_header X-Forwarded-For $remote_addr;

expires 90d;

}
}
}
[root@lb01 conf]# cat proxy.conf
proxy_set_header Host host; proxy_set_header X-Forwarded-Forremote_addr;
proxy_temp_path /home/proxy_temp_dir; #指定临时文件目录
client_body_buffer_size 512k; #增加缓冲区代理缓冲客户端请求的最大字节数
proxy_connect_timeout 60; #增加连接后端服务器超时时间
proxy_read_timeout 60; #增加后端服务器响应请求超时时间
proxy_send_timeout 60; #增加后端服务器发送数据超时时间
proxy_buffer_size 32k; #增加代理请求缓存区大小
proxy_buffers 4 64k; #增加
proxy_busy_buffers_size 128k; #增加系统繁忙时可申请的proxy_buffers大小
proxy_temp_file_write_size 128k; #增加proxy缓存临时文件的大小
proxy_next_upstream error timeout invalid_header http_500 http_503 http_404; #增加故障转移,如果后端的服务器返回502、504、执>
行超时等错误,自动将请求转发到upstream负载均衡池中的另一台服务器,实现故障转移。
注:proxy_cache的缓存清理工具内容,测试还有点问题,下个版本更新时再添加。
检测缓存效果:
首先将原图片名称变更:
然后再访问刚才的这个界面,会发现请求头信息里边有来自于cache

用谷歌浏览器测试的时候,可以按F12调用开发工具,选择Network选项,我们可以看到,Response Headers,在这里我们可以看到,我们请求的是否是缓存,但现在还看不到,下面我们来配置一下,再来测试。
1.缓存变量说明
server_addr 服务器地址,在完成一次系统调用后可以确定这个值,如果要绕开系统调用,则必须在listen中指定地址并且使用bind参数。upstream_cache_status
0.8.3版本中其值可能为:
MISS 未命中
EXPIRED - expired。请求被传送到后端。
UPDATING - expired。由于proxy/fastcgi_cache_use_stale正在更新,将使用旧的应答。
STALE - expired。由于proxy/fastcgi_cache_use_stale,后端将得到过期的应答。
HIT 命中
将这两句放在server标签中即可
add_header X-Via server_addr; add_header X-Cacheupstream_cache_status;
具体位置可看上边的nginx.conf里边
在缓存文件夹也可以看见缓存的文件,

相关文章

网友评论

      本文标题:Nginx静态缓存配置

      本文链接:https://www.haomeiwen.com/subject/ysjcrctx.html