概要
通过真实地址访问文件会产生安全方面问题,
为了隐藏真实文件上传地址,用到http_secure_link_module内置模块
http_secure_link_module添加
因为之前已经有nginx,按如下操作。
去官网找到nginx压缩包下载到本地:例如nginx-1.20.1
执行命令
cd ./nginx-1.20.1
./configure --prefix=/app/nginx --with-http_secure_link_module
注意:不能make install
make
cp ./objs/nginx /app/nginx/sbin
cd /app/nginx/sbin
./nginx -V
./nginx -s reload
nginx配置
cd /app/nginx/conf
vim nginx.conf
把以下配置加进去:
#匹配以hashfile开头的文件
location ^~ /hashfile {
secure_link_secret mySecret;
if ($secure_link = "") {
return 401;
}
proxy_pass http://xxxxsftp.com/$secure_link;
}
网上随便找个md5在线加密: filepath/demo.txtmySecret
全局变量$secure_link 就是filepath/demo.txt
注意:不能以/开头
生成32位小写密文ac646b05e8f9064fb2e4d8ac5a8a5f21
访问 http://localhost/hashfile/ac646b05e8f9064fb2e4d8ac5a8a5f21/filepath/demo.txt
代理到
http://xxxxsftp.com/filepath/demo.txt
下载成功
小结
文件路径这边主要涉及到的有:上传,下载,预览,其中下载预览主要是浏览器的实现,需要对上传接口及涉及接口处理。
考虑到历史数据的兼容性,需要在nginx监听的每个web服务配置此脚本。
接口层面需要对上传之后的路径进行md5加密。