• nginx 的第三方模块ngx_http_accesskey_module 来实现下载文件的防盗链步骤(linux系统下)


    nginx 的第三方模块ngx_http_accesskey_module 来实现下载文件的防盗链步骤(linux系统下),安装Nginx和HttpAccessKeyModule模块(参考LNMP环境搭建:
    第一步:在/usr/local/src/下下载模块压缩包:
        wget http://wiki.nginx.org/images/5/51/Nginx-accesskey-2.0.3.tar.gz (下载)
        tar zxvf Nginx-accesskey-2.0.3.tar.gz                               (解压)
        cd nginx-accesskey-2.0.3/                         (切换目录)

        解压此文件后,找到nginx-accesskey-2.0.3下的config文件。
        编辑此文件:替换其中的"$HTTP_ACCESSKEY_MODULE"为"ngx_http_accesskey_module"
        vi config
        修改结果如下:
        #HTTP_MODULES="$HTTP_MODULES $HTTP_ACCESSKEY_MODULE"
        HTTP_MODULES="$HTTP_MODULES ngx_http_accesskey_module" 
    第二步:安装nginx1.5.2,–with-***设置的是模块源码包的路径

        tar zxvf nginx-1.5.2.tar.gz
        cd nginx-1.5.2
        ./configure --user=www --group=www --prefix=/usr/local/webserver/nginx --with-http_stub_status_module
        --with-http_ssl_module --with-http_realip_module --with-http_image_filter_module
        --add-module=/usr/local/src/nginx-accesskey-2.0.3/

        make
        make install

        /usr/sbin/groupadd www
        /usr/sbin/useradd -g www www

        创建web根目录并修改权限,当然可以指定其他目录,只要和Nginx配置文件一致即可
        mkdir -p /data0/htdocs/www
        chmod +w /data0/htdocs/www
        chown -R www:www /data0/htdocs/www

        vi /usr/local/webserver/nginx/conf/nginx.conf
        修改#user  nobody;为user www www;
        修改location /{}中的root html;为网站目录例如/data0/htdocs/www
        在/data0/htdocs/www目录中随便创建一个index.html文件
        启动nginx并访问测试
        ulimit -SHn 65535
        /usr/local/webserver/nginx/sbin/nginx
        其他命令:
        测试nginx的配置文件是否正确/usr/local/webserver/nginx/sbin/nginx -t
        修改nginx配置文件后使之生效/usr/local/webserver/nginx/sbin/nginx -s reload
        查看端口确认是否启动成功    netstat -tunpl | grep 80
        查看第三方模块ngx_http_accesskey_module是否添加上:/usr/local/webserver/nginx/sbin/nginx -V

    第三步:修改nginx的conf文件,server{***}里边添加以下几行

        location /download {
              accesskey             on;
              accesskey_hashmethod  md5;
               accesskey_arg         "key";
               accesskey_signature   "mypass$remote_addr";
        } 



        其中:
        accesskey为模块开关;
        accesskey_hashmethod为加密方式MD5或者SHA-1;
        accesskey_arg为url中的关键字参数;
        accesskey_signature为加密值,此处为mypass和访问IP构成的字符串。
        
        /download 为下载文件的目录,前台php产生的下载路径格式是:http://*****.com/download/1.zip?key=    
        这样,当访问没有跟参数一样时,其他用户打开时,就出现:403

        访问测试脚本download.php:
    <?php
    $ipkey= md5("mypass".$_SERVER['REMOTE_ADDR']);
    //$ipkey生成的算法要跟配置文件的设置保持一致
    $output_add_key="<a href=http://192.168.1.82/download/a.jpg?key=".$ipkey.">
    download_add_key</a>";
    $output_org_url="<a href=http://192.168.1.82/download/a.jpg>download_org_path</a>";
     
    echo $output_add_key;
    echo $output_org_url;
    ?>


    访问第一个download_add_key链接可以正常下载,第二个链接download_org_path会返回403 Forbidden错误。

    若出现不了,“访问第一个download_add_key链接可以正常下载,第二个链接download_org_path会返回403 Forbidden错误”这种结果,可查看进程:
    ps aux | grep nginx
    kill -9 2366
    kill -9 7863
    最后命令启动nginx:  /usr/local/webserver/nginx/sbin/nginx 
    OK完成,可以查看结果啦 

  • 相关阅读:
    微信开发-如何自定义页面分享元素
    nginx实现日志按天切割
    JS兼容IE浏览器的方法
    mysql 索引过长1071-max key length is 767 byte
    playframework1.x的eclipse插件开源-playtools
    开放平台-web实现人人网第三方登录
    开放平台-web实现QQ第三方登录
    bash shell执行方式
    pushd和popd
    What do cryptic Github comments mean?
  • 原文地址:https://www.cnblogs.com/duanxz/p/5121033.html
Copyright © 2020-2023  润新知