基础服务篇之Nginx反向代理及缓存(四)

简介

代理服务器接受客户端的请求,然后把请求代理给后端真实服务器进行处理,然后再将服务器的响应结果返给客户端。
反向代理是nginx的一个重要功能,在编译安装时会默认编译该模块,在配置文件中主要配置proxy_pass指令。

与正向代理(正向代理主要是代理客户端的请求)相反,反向代理主要是代理服务器返回的数据,所以它的作用主要有以下两点:
1. 可以防止内部服务器被恶意攻击(内部服务器对客户端不可见)。
2. 为负载均衡和动静分离提供技术支持。

语法

Syntax: proxy_pass URL;
Default: —
Context: location, if in location, limit_except

代理服务器的协议,可支持http与https,地址可以指定为域名或IP地址,以及可选端口。
例如:
proxy_pass http://192.168.202.130;
proxy_pass http://192.168.202.130:8080;
proxy_pass http://localhost:9000;同理也可以代理本台进服务器的服务,此时只需要加端口就可以了

配置实例

代理服务器node05: 192.168.202.132
后端服务器node03: 192.168.202.130

启动node05节点和node03的nginx服务并访问

[root@node05 ~]# curl 192.168.202.132
this is 192.168.202.132
[root@node03 ~]# curl 192.168.202.130
this is 192.168.202.130

在node05配置反向代理
在这里插入图片描述nginx -s reload 加载配置后用pc端访问node05节点

[root@node05 ~]# nginx -s reload
[root@node05 ~]# curl 192.168.202.132
this is 192.168.202.130

在这里插入图片描述此时我们能看到只有在代理服务器上才能看到客户端的访问IP,后端服务器只能看到代理服务器IP
在这里插入图片描述在这里插入图片描述要想让后端服务器也能看到客户端访问IP,则代理服务器需要配置一下参数
在这里插入图片描述后端服务器日志格式需要增添访问用户真实IP参数,以便在日志中排错
在这里插入图片描述node05和node03修改完配置文件后nginx -s reload重新加载文件,再次查看日志
在这里插入图片描述在这里插入图片描述在这里插入图片描述

缓存代理服务器

在代理服务器的磁盘中保存请求目标的内容,加快响应速度,减少应用服务器(后端服务器)上的资源开销,比如多客户端请求相同的资源,代理缓存命中后,对于应用服务器来说,只发生了一次资源调度。而浏览器上的缓存配置,一般来说是用来减少本地IO的,请求目标的内容会存放在浏览器本地。

配置文件:

....
    proxy_cache_path /data/nginx/cache max_size=10g levels=1:2
            keys_zone=nginx_cache:10m inactive=10m use_temp_path=off;

    server {
        listen       80;
        server_name  localhost;
        #deny 192.168.202.130;

        #charset koi8-r;

        #access_log  logs/host.access.log  main;

        location / {
            proxy_pass http://192.168.202.130;
            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_cache nginx_cache;
            proxy_cache_key $host$uri$is_args$args;
            proxy_cache_valid 200 304 302 1d;
            root   html;
            index  index.html index.htm;
        }
.....

在这里插入图片描述/data/nginx/cache #缓存资源存放路径

levels #设置缓存资源的递归级别,默认为levels=1:2,表示Nginx为将要缓存的资源生成的key从后依次设置两级保存

key_zone #在共享内存中设置一块存储区域来存放缓存的key和metadata,这样nginx可以快速判断一个request是否命中或者未命中缓存,1m可以存储8000个key,10m可以存储80000个key

max_size #最大cache空间,如果不指定,会使用掉所有disk space,当达到配额后,会删除不活跃的cache文件

inactive #inactive是删除指定时间内未被访问的缓存文件,inactive默认是10分钟(这里为了实验快速我调至1分钟)

use_temp_path #如果为off,则nginx会将缓存文件直接写入指定的cache文件中,而不是使用temp_path存储,official建议为off,避免文件在不同文件系统中不必要的拷贝

proxy_cache #启用proxy cache,并指定key_zone。如果proxy_cache off表示关闭掉缓存

查看缓存进程是起来的
在这里插入图片描述
进入/data/nginx/cache目录查看现在是没有数据的

[root@node05 ~]# cd /data/nginx/cache/
[root@node05 cache]# ll
total 0

客户端访问下就会有缓存数据
在这里插入图片描述

[root@node05 ~]# cd /data/nginx/cache/
[root@node05 cache]# ll 8/5f/
total 4
-rw------- 1 nginx nginx 614 Apr 29 00:29 508f7b9081916dd9e175248b947c15f8

过了一分钟后缓存数剧没有了(508f7b9081916dd9e175248b947c15f8)

[root@node05 cache]# ll 8/5f/
total 0

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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值