前言
反向代理使用Nginx,当客户端向Nginx服务器发送请求时,Nginx转发给集群,当请求到达Nginx时可以加一层缓存,可存储动态页面,当缓存存在时Nginx直接将缓存返回给客户端,而不请求服务器,这样可以将一大部分请求拦截到直接返回缓存,使服务器压力降低。
缓存配置
无缓存配置
worker_processes 1; events { worker_connections 1024; } http { include mime.types; default_type application/octet-stream; sendfile on; keepalive_timeout 65; server { listen 8080; server_name localhost; } location / { proxy_pass http://127.0.0.1:8878; } }
proxy_pass指令:用来设置被代理服务器的地址,可以是主机名称,IP地址加端口号等形式
现在加上缓存配置
worker_processes 1; events { worker_connections 1024; } http { proxy_cache_path ../data levels=1:2 keys_zone=cache_one:500m inactive=1d max_size=30g; include mime.types; default_type application/octet-stream; sendfile on; keepalive_timeout 65; server { listen 8080; server_name localhost; } location / { proxy_cache cache_one; proxy_cache_valid 200 304 302 1h; proxy_pass http://127.0.0.1:8878; proxy_cache_key $uri$is_args$args; } }
加了三行:
proxy_cache_path ../data 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目录
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分钟