分享
  • 收藏
  • 举报
    X
    宝塔面板编译Nginx secure_link模块
    1928
    1

    之前有个功能需要nginx的secure_link模块,无奈宝塔默认编译的Nginx不带这个模块,所以就需要手动编译并替换。

    目前宝塔面板提供的最新Nginx是1.12.2,和官方稳定版一样。记录一下编译过程

    说明
    宝塔在默认编译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
    p.s nginx 1.12.2已支持ipv6,不需要再单独指定–with-ipv6

    upgrade完毕后,使用 nginx -V 命令 再次查看版本信息


    可以看到secure_link模块已成功添加

    网站中有下载压缩包等资源,但是这些资源都是对会员公开的,需要设定有效期。这里就需要做到防盗链的功能。

    以前仅仅使用Referer验证,只能防止一些小白的盗链,对于一些工具来说一点用都没有。

    但是在nginx下,可以使用secure_link完美的来解决这个问题。这里针对的只是文件下载防盗链,不适用于图片的防盗链。

    一、配置nginx。

     
    1. server {

    2.     listen       80;

    3.     server_name  www.web1.com;

    4.     location / {

    5.         index index.html index.php index.html;

    6.         root /data/www;

    7.     }

    8.  location /video {
      root /www/wwwroot;
      #这里配置了2个参数一个是st,一个是e
      secure_link $arg_st,$arg_e;
      #st的哈希格式为 自定义秘钥+url+e,e为时间戳单位s,url为请求地址
      secure_link_md5 yuxunyuqi520$uri$arg_e;
      #这里我们的st是我们按照secure_link_md5的方式计算的哈希,secure_link会比对它计算的哈希值是否与我们的st参数一致
      if ($secure_link = "") {
      #资源不存在或哈希比对失败
      return 402;
      }
      if ($secure_link = "0") {
      #时间戳过期
      return 404;
      }
      if ($request_filename ~* ^.*?\.(mp3|mp4|m4a|m3u8)$){
      #直接下载防止打开文件  格式: (mp4|txt|jpg)
      add_header Content-Disposition 'attachment;';
              #如不下载则屏蔽上方代码
      }
      }
          }

    9.     

    10.     ##其他配置省略##

    11.     ......

    12. }

    原文链接地址:https://www.sanwenzx.cn/showinfo-110-1390-0.html

    8
    赏礼
    赏钱
    收藏
    点击回复
        全部留言
    • 1
    更多回复
        你可能感兴趣的主题
    恢复多功能编辑器
  • 3 1
  • 推荐内容
    扫一扫访问手机版
    请选择要切换的马甲:

     
    网页即时交流
    QQ咨询
    咨询热线
    020-28998648