每一个你不满意的现在,都有一个你不努力的曾经。
宝塔面板编译Nginx secure_link模块、防盗链
关于宝塔编译Nginx
- 宝塔在默认编译nginx后,会保留源码,及必要的模块源码(如
ngx_cache_purge
),所以编译时无需再次下载 - 默认安装脚本:
/www/server/panel/install/nginx.sh
- nginx源码目录:
/www/server/nginx/src/
如:给nginx添加secure_link模块
编译时长根据环境硬件而定,一般600~900秒左右,建议开启
screen
编译
cd /www/server/nginx/src/
./configure --user=www --group=www --prefix=/www/server/nginx --with-openssl=/www/server/nginx/src/openssl --add-module=/www/server/nginx/src/ngx_devel_kit --add-module=/www/server/nginx/src/lua_nginx_module --add-module=/www/server/nginx/src/ngx_cache_purge --with-http_stub_status_module --with-http_ssl_module --with-http_v2_module --with-http_gzip_static_module --with-http_gunzip_module --with-stream --with-stream_ssl_module --with-http_sub_module --with-http_flv_module --with-http_addition_module --with-http_realip_module --with-http_mp4_module --with-ld-opt="-Wl,-E" --with-http_secure_link_module
make
rm -f /www/server/nginx/sbin/nginx.old
mv /www/server/nginx/sbin/nginx /www/server/nginx/sbin/nginx.old
cp objs/nginx /www/server/nginx/sbin/nginx
make upgrade
ps: nginx 1.12.2已支持ipv6,不需要再单独指定
–with-ipv6
upgrade
完毕后,使用nginx -V
命令 再次查看版本信息
可以看到
secure_link
模块已成功添加
设置nginx location
location ~ .*\.(m3u8|swf|txt)$
{
secure_link $arg_st,$arg_e;
#segredo为密码样例
secure_link_md5 segredo $uri$arg_e;
if ( $secure_link = "" ) {
return 402;
}
if ( $secure_link = "0" ) {
return 405;
}
}
Demo
$secret = 'segredo'; // secrets
$path = '/aaa.txt'; // ?f=path
$expire = time()+10; // add ? seconds to be available,这里是10秒内访问有效
$md5 = base64_encode(md5($secret . $path . $expire, true)); // Using binary hashing.
$md5 = strtr($md5, '+/', '-_'); // + and / are considered special characters in URLs, see the wikipedia page linked in references.
$md5 = str_replace('=', '', $md5); // When used in query parameters the base64 padding character is considered special.
$url = $request->url()."$path?st=$md5&e=$expire"; //安全下载链接可以直接echo输出
echo "<a href="%24url"> 点击 </a>";
dd($url,date('Y-m-d H:i:s'));
每一个你不满意的现在,都有一个你不努力的曾经。