Nginx缓存服务器配置

缓存的作用

减少后端压力,提高网站并发量以及响应速度。

常见缓存类型
  • 服务器端缓存:如Redis,memcached,web服务器。
  • 代理缓存,获取服务端内容进行缓存,如Nginx作为代理服务器,缓存请求资源真实服务器的响应的信息。
  • 客户端缓存,即浏览器缓存。
缓存配置语法
#缓存配置
Syntax:	proxy_cache	zone	|	off;
Default:	proxy_cache	off;
Context:	http,	server,	location
#缓存过期周期
Syntax:	proxy_cache_valid	[code	...]	time;
Default:	—
Context:	http,	server,	location

#示例
#对200 302响应头的资源缓存10分钟,对404响应头的资源缓存1分钟
proxy_cache_valid	200 302 10m;
proxy_cache_valid	404 1m;
#缓存维度,即缓存哪些信息

Syntax:	proxy_cache_key	string;
Default:				proxy_cache_key	$scheme$proxy_host$request_uri;
Context:	http,	server,	location

#示例
proxy_cache_key	"$host$request_uri	$cookie_user";
proxy_cache_key	$scheme$proxy_host$uri$is_args$args;

示例

在你的默认nginx配置文件下包含以下两个文件
server.conf
在指定的root下准备好html页面

server {
    listen 8001;
    root /usr/local/nginx/html;
    index 1.html;
}
server {
    listen 8002;
    root /usr/local/nginx/html;
    index 2.html;
}
server {
    listen 8003;
    root /usr/local/nginx/html;
    index 3.html;
}

proxy_server.conf

#http下
#说明,level:缓存层级为2级,keys_zone:开辟的空间名称为code_cache,大小为10兆,max_size=10g :缓存的资源最大为10g,多的自动忽略,inactive=60:该缓存在60分钟内未被访问则清理掉,use_temp_path=off;关闭零时缓存

proxy_cache_path 你的缓存路劲 levels=1:2 keys_zone=code_cache:10m max_size=10g inactive=60m use_temp_path=off;

    upstream cache {
        server 39.96.20.91:8001;
        server 39.96.20.91:8002;
        server 39.96.20.91:8003;
    }
#server下
server {
        listen       8000;
        server_name  localhost;

        #charset koi8-r;

        #access_log  logs/host.access.log  main;

        location / {
#root   html;
#index  index.html index.htm;
            proxy_pass http://cache;
            proxy_cache code_cache;
            proxy_cache_valid 200 304 12h;
            #除去200 304状态码的资源,缓存10分钟
            proxy_cache_valid any 10m;
            #缓存状态,在http响应头可以看到是否命中缓存, MISS/HIT
            add_header Nginx_Cache "$upstream_cache_status";
            #如果出现规定的状态码的错误,则跳转到另一台服务器去请求资源
            proxy_next_upstream error timeout invalid_header http_500 http_502 http_503  http_504;
            include proxy_param;
        }

proxy_param

proxy_set_header    Host    $http_host;
proxy_set_header    X-Real-IP   $remote_addr;
proxy_set_header    X-Forwarded-For $proxy_add_x_forwarded_for;

proxy_connect_timeout 30;
proxy_send_timeout 60;
proxy_read_timeout 60;

proxy_buffer_size 32k;
proxy_buffering on;
proxy_buffers 4 128k;
proxy_busy_buffers_size 256k;
proxy_max_temp_file_size 256k;

重启nginx,查看端口是否开启:

nginx -s reload
netstat -ntlp

在这里插入图片描述
在浏览器访问http://IP:8000,第一次返回200,缓存MISS未命中,刷新,返回304,缓存HIT命中。
在这里插入图片描述
在这里插入图片描述

配置部分页面不缓存

在proxy_server.conf的server中加上如下代码,表示请求1|login|register|password页面的时候不开启缓存,其余开始缓存

if	($request_uri	~	^/(url3|login|register|password))	{
	set $cookie_nocache	1;
}

在proxy_server.conf的location下加上如下两行:

proxy_no_cache	$cookie_nocache $arg_nocache $arg_comment;
proxy_no_cache	$http_pargma $http_authorization;

现在,访问1.html的时候不会缓存,每次请求返回的状态码都为200,请求2.html或者3.html的时候会产生缓存。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值