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 的第三方模块ngx_http_accesskey_module 来实现下载文件的防盗链步骤(linux系统下)的更多相关文章

  1. Debian 为nginx增加第三方模块

    为nginx增加第三方模块需要重新编译nginx的,但是debian在安装nginx的时候做了很多事情,比如systemd,/etc/nginx/里的各种文件,所以我们最好在debian源代码包的基础 ...

  2. nginx增加第三方模块

    增加第三方模块 ============================================================ 一.概述nginx文件非常小但是性能非常的高效,这方面完胜ap ...

  3. nginx 安装第三方 模块

    查看nginx在安装时开启了哪些模块 如果你nginx是rpm包安装的,直接用如下命令nginx -V 如果你是源码包编译安装,假如你的安装路径是/usr/local/nginx,那么你可以使用: / ...

  4. 在Linux系统下安装nginx教程

    最近学习了nginx,就打算nginx安装在Linux系统下,于是我就把安装步骤记录下来了,分享给大家,希望能对大家有帮助! 我的博客地址:https://www.cnblogs.com/themys ...

  5. Nginx在Windows系统和Linux系统下的重启

    一.Windows系统下重启nginx 1.杀掉nginx进程 tskill nginx echo 已终止所有ginx进程      2.启动nginx cd f:\nginx-  nginx.exe ...

  6. Linux系统下利用wget命令把整站下载做镜像网站

    Linux系统下利用wget命令把整站下载做镜像网站 2011-05-28 18:13:01 | 1次阅读 | 评论:0 条 | itokit  在linux下完整的用wget命令整站采集网站做镜像 ...

  7. redis在windows和Linux系统下的下载、安装、配置

    1.下载redis安装包 在redis的官网只有Linux系统下的安装包,微软的GitHub上有提供windows版本的redis安装包 redis中文网:http://www.redis.cn/ 微 ...

  8. linux系统下nginx安装目录和nginx.conf配置文件目录

    linux系统下nginx安装目录和nginx.conf配置文件目录 1.查看nginx安装目录 输入命令 # ps  -ef | grep nginx 返回结果包含安装目录 root      26 ...

  9. nginx安装第三方模块的方法

    nginx第三方模块安装方法: ./configure --prefix=/你的安装目录 --add-module=/第三方模块目录 以安装fair模块实例 下载fair安装包并解压 1.在未安装ng ...

随机推荐

  1. 报错HTTP Status 500 - HHH000142: Javassist Enhancement failed: cn.itcast.entity.Customer; nested exception is org.hibernate.HibernateException: HHH000142: Javassist Enhancement failed: cn.itcast.entity.

    报错 type Exception report message HHH000142: Javassist Enhancement failed: cn.itcast.entity.Customer; ...

  2. mysql 习题

    习题1 1.创建一个库(dt55_mysql),在库下创建一张students表 (1)students表中的字段有:id(int类型),stuName(varchar类型),age(int类型),w ...

  3. Linux下用c语言实现whereis.

    简单的一个whereis的实现,代码如下: #include <stdio.h> #include <errno.h> #include <dirent.h> #i ...

  4. LeetCode OJ:Spiral Matrix(螺旋矩阵)

    Given a matrix of m x n elements (m rows, n columns), return all elements of the matrix in spiral or ...

  5. 大马猴队-Alpha阶段项目复审

    队名 优点 缺点 名次 菜鸡互坑队 经典游戏,情怀加分. 刷新的苹果会在蛇身上出现  14 菜鸡互啄 利用python语言实现git版本管理,典型用户清晰. 没有很好地分析用户痛点,没有测试计划  4 ...

  6. 《Drools7.0.0.Final规则引擎教程》第4章 4.2 ruleflow-group&salience

    ruleflow-group 在使用规则流的时候要用到ruleflow-group属性,该属性的值为一个字符串,作用是将规则划分为一个个的组,然后在规则流当中通过使用ruleflow-group属性的 ...

  7. Arcgis for JS扩展GraphicLayer实现区域对象的聚类统计与展示

    功能需求: 分省市统计并展示全国雨量站的数目与位置. 常规做法: 分省市雨量站的数目通过统计表的形式在页面端展示,位置根据XY坐标信息将雨量站标绘在图上. 优化做法: 去掉统计图的展示方式,直接将各省 ...

  8. [转载] FFMPEG视音频编解码零基础学习方法

    在CSDN上的这一段日子,接触到了很多同行业的人,尤其是使用FFMPEG进行视音频编解码的人,有的已经是有多年经验的“大神”,有的是刚开始学习的初学者.在和大家探讨的过程中,我忽然发现了一个问题:在“ ...

  9. 在windows环境初步了解tuxedo

    最近换了一份工作,新公司使用tuxedo来简化应用的开发,而我参加工作这么多年,虽说略懂c++的开发,但是也没有用过tuxedo这种古老的东西.既然没有接触过,那就学学吧.先描述一下道路的曲折性吧. ...

  10. vc++ windows获取计算机信息

    在软件开发中,我们经常要获当前系统的版本号,判断当前是什么系统,获取获取物理内存和可用内存大小,获取CPU名称.内核数目.主频,获取MAC地址,获取屏幕分辨率,下面的这个c++类将包含所有这些信息. ...