Nginx缓存服务器配置

ngx_http_proxy_module模块

代理模块,允许向另一个服务器发送请求

重要的几个指令

1.proxy_pass URL;

设置代理服务器的协议和地址以及应该映射位置的URI。作为协议,可以指定“HTTP”或“HTTPS”。地址可以指定为域名或IP地址,以及可选端口
有个容易混的地方需要注意下

server {
		...
		server_name HOSTNAME;
		location /uri/ {
			proxy http://host[:port];
##proxy_pass后面的路径不带uri时,其会将location的uri传递给后端主机			
##客户端访问:http://HOSTNAME/uri  实际上访问: http://host/uri 
		}
		...
}
server {
	...
	server_name HOSTNAME;
	location /uri/ {
		proxy http://host/new_uri/;
#proxy_pass后面的路径是一个uri时,其会将location的uri替换为proxy_pass的uri;
#客户端访问http://HOSTNAME/uri/,实际上是在访问 http://host/new_uri/
	}
	...
}
2、proxy_set_header field value;

设定发往后端主机的请求报文的请求首部的值;可以自定义首部

proxy_set_header X-Real-IP  $remote_addr;
proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
3、proxy_cache_path

定义可用于proxy功能的缓存;用户访问代理服务器的时候,如果每次都往后端去重新取数据,这个非常耗资源,所以可以再这里设置缓存,将常用的缓存在代理服务器本地。这里使用的方式需要先用这个指令定义,再用proxy_cache这个指令指定使用。这个指令后面会说。
格式:

proxy_cache_path path [levels=levels] [use_temp_path=on|off] keys_zone=name:size [inactive=time] [max_size=size] [manager_files=number] [manager_sleep=time] [manager_threshold=time] [loader_files=number] [loader_sleep=time] [loader_threshold=time] [purger=on|off] [purger_files=number] [purger_sleep=time] [purger_threshold=time];

示例:

proxy_cache_path   /usr/local/nginx/proxy_cache  levels=1:2:1  keys_zone=pcache:5m max_size=2g

表示缓存存放的路径为/usr/local/nginx/proxy_cache,levels=1:2:1 用户访问的时候我们可以设置对uri做hash得到的值,从右到左。第1个字符表示第一级目录的目录名,第2,3个字符表示第二级目录名,第4个字符表示第三级目录名。这种方式方便查找,,假设我们基于uri做hash,用户访问的时候我们根据hash的结果查找目录。可以快速检索。pcache表示键的名字,5m是键使用的空间。目录磁盘空间最大不能超过2g,可以结合后面的图进行理解

4、proxy_cache zone | off;

指明要调用的缓存,或关闭缓存机制;使用的时候再http,server,location中写
示例:

proxy_cache pcache;
#表示使用pcache缓存,这个使用之前必须先用proxy_cache_path先定义。
5、 proxy_cache_key string;

缓存中用于“键”的内容;

proxy_cache_key $scheme$proxy_host$request_uri;
这里设置$scheme$proxy_host$request_uri作为键
6、proxy_cache_valid [code …] time;

定义对特定响应码的响应内容的缓存时长;定义在http{…}中;Nginx不仅可以

常用配置的示例

环境
代理服务器ip:192.168.253.128
后端真实服务器ip:192.168.253.139 (这台机上有一个httpd服务,index.html内容为httpd)

http {
    include       mime.types;
    default_type  application/octet-stream;
    sendfile        on;
    keepalive_timeout  65;
    proxy_cache_path   /usr/local/nginx/proxy_cache  levels=1:2:1  keys_zone=pcache:5m max_size=2g; ##定义缓存存放路径
    server {
        listen       80;
        server_name  localhost;
        location / {
             root html;
             proxy_cache pcache;  ##使用上面定义的pcache缓存
             proxy_pass http://192.168.253.139; ##后端服务器为192.168.253.139
             proxy_cache_key $request_uri; ##将$request_uri作为键
       	     proxy_cache_valid 200 302 301 1h;##将响应码200,302,301进行缓存,时间为1小时
             proxy_cache_valid any 1m; ##除了200,302,301这几个响应码,其他的响应码都缓存1分钟。
        }
        error_page   500 502 503 504  /50x.html;
        location = /50x.html {
            root   html;
        }
    }
}

然后启动Nginx

nginx

访问一下代理服务器看是否正常
这里写图片描述
这个是后端真实服务器的页面。之前设置的。所以可以看出是成功了的。然后我们可以看一下缓存是否生效了
这里写图片描述

  • 1
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值