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 请求和缓存键。