基于nginx的缓存代理与缓存管理详解

1 nginx服务器的配置

我在nginx服务器上下载了frpc,方便使用mobaxterm登陆,以及进行内网穿透。
frpc.ini的配置文件如下:

# frpc.ini
[common]
server_addr = 202.38.68.71
server_port = 1000

[ssh+18888] 
type = tcp
local_ip = 127.0.0.1
local_port = 22
remote_port = 18888 

[ssh+18899] 
type = tcp
local_ip = 127.0.0.1
local_port = 1880
remote_port = 18899

FRP 是一个端口转发工具,它只能连接到运行 在同一台设备上的服务,不能直接连接到远程的服务地址。这里local_port = 22和1880,以及remote_port = 18888 和18899都是server_addr = 202.38.68.71的地址。设置local_port和remote_port至少为了方便和nginx服务器通信。
这里,我们使用202.38.68.71:18888地址在mobaxterm上登陆nginx服务器。而202.38.68.71:18899则留给播放器对nginx缓存代理进行访问。

2 nginx安装

安装见文章基于nginx在视频播放器与服务器之间反向代理流程 的3 nginx安装与配置

3 nginx.conf文件配置

由于如下的配置,播放器对202.38.68.71:18899进行访问,实际对内网的1880端口进行访问。

[ssh+18899] 
type = tcp
local_ip = 127.0.0.1
local_port = 1880
remote_port = 18899

因此,nginx.conf应该按如下配置:

# user  nobody; 
worker_processes  1;

events {
    worker_connections  1024;
}

http {
    include       mime.types;
    default_type  application/octet-stream;

    sendfile        on;
    keepalive_timeout  65;

    # 缓存路径配置
    proxy_cache_path /usr/local/proxy_cache levels=2 keys_zone=myzone:400m inactive=7d max_size=5g use_temp_path=off;

    # gzip  on;

    # 定义内容服务器
    upstream backend {
        server 202.38.68.70:1880;
    }

    server {
    # 播放器对202.38.68.71:18899进行访问,实际对内网的1880端口进行访问
        listen       1880; 
       # 这里nginx服务器地址、127.0.0.1和0.0.0.0应该都可以
        server_name  0.0.0.0;

        location / {
            # 启用缓存
            proxy_cache myzone;
            proxy_cache_methods GET POST;
            proxy_ignore_headers Cache-Control Expires;
            proxy_ignore_headers Set-Cookie Cache-Control Expires;
            proxy_hide_header Set-Cookie;
            proxy_hide_header nginx-cache-status;
            proxy_cache_min_uses 1;  # 请求1次后即可缓存
            proxy_cache_valid 200 7d; # 200状态缓存7天

            # 设置代理服务器地址
            proxy_pass http://backend;

            # 添加响应头
            add_header Access-Control-Allow-Methods "GET,OPTIONS,POST,HEAD,PUT,DELETE";
            add_header Accept-Ranges "bytes";
            # 添加状态头
            add_header nginx-cache "$upstream_cache_status";
            add_header Cache-Control "public, max-age=86400"; # 设置缓存策略为 public,存储1天
            add_header Access-Control-Allow-Origin "*";
            add_header Access-Control-Allow-Headers "*";
            add_header Access-Control-Allow-Credentials "true";
            add_header Access-Control-Expose-Headers "Content-Length,Content-Range,Date,Server,Transfer-Encoding,Origin,Range,x-goog-meta-foo1";
        }
    }

}

当完成nginx.conf的配置后:

sudo ./nginx -t -c /usr/local/nginx/conf/nginx.conf
sudo ./nginx -c /usr/local/nginx/conf/nginx.conf
sudo ./nginx -s reload

4 播放器测试

按上面的地址访问
在这里插入图片描述
查看缓存命中情况:
在这里插入图片描述
当然第一次必然是MISS的

5 nginx缓存管理

5.1 主动缓存

可以在nginx代理服务器上使用如下命令需求资源

curl http://127.0.0.1:1880/path/xx.mp4

随后可以使用如下命令检查

curl -I http://127.0.0.1:1880/path/xx.mp4

如果成功缓存则显示如下信息
在这里插入图片描述

5.2 缓存删除

第一步:检查缓存位置

sudo grep -r "xx.mp4" /usr/local/proxy_cache/

得出
在这里插入图片描述
第二步:
rm上面显示的路径即可

sudo rm /usr/local/proxy_cache/path

5.3 注意

Nginx 的缓存文件是二进制文件,其文件名是由 proxy_cache_key 生成的哈希值。因此,直接使用 proxy_cache_purge 不能基于文件路径清理这些缓存,因为 proxy_cache_purge 的原理是基于 URL 请求和缓存键。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值