通过lua来配置实现Nginx服务器的防盗链功能_nginx

下载服务器时常被人盗链,时间久了导致服务器大量资源浪费,由于服务器使用nginx做为web服务器。nginx的防盗链方法有很多,可以使用现成的防盗链模块nginx-accesskey-2.0.3,编译ningx时添加此模块即可。
由于服务其他业务需要,所以nginx编译了lua模块,所以就想通过lua来实现下载服务器的防盗链功能(通过lua的Nginx模块lua_nginx_module、这里不再详细介绍配置过程),这样就可以免去了accesskey模块。原理就是生成经过处理过的下载链接,然后下载服务器在处理这个下载链接,成功则下载,失败则阻止。下面就是详细的配置实例:
一、在下载页面生成链接的nginx配置
download.jb51.net的配置:

server
{
    listen    80;
    server_name download.jb51.net;
    index index.htm index.html;
    root /data/www/download;
    ssi on;  

    location /
    {
        set_by_lua $downkey '
            return ngx.md5("encryption" .. ngx.var.remote_addr .. "suffix")
        ';
    }
}

注意:要开启ssi才能在html页面中获取nginx自定义变量downkey,这样才能生成经过处理的url,其中字符串encryption和suffix为自定义的,可随便改其他字符,目的是为了生成别人不容易猜解的串。
测试index.html代码:
二、下载服务器nginx配置:

server
{
    listen    80;
    server_name down.jb51.net;
    index index.htm index.html;
    root /data/www/down;
    limit_conn  one 1;
    set $limit_rate 1000k;  

  location /
    {
        set_by_lua $foo '
            if string.sub(ngx.var.uri, 2, 33) == ngx.md5("encryption" .. ngx.var.remote_addr .. "suffix") then
                return 1
            else
                return 0
            end
        ';  

        if ($foo = 1)
        {
            rewrite "^/([0-9a-z]{32})(.*?)$"    $2 break;
        }
        if ($foo = 0)
        {
            rewrite ^/ http://download.jb51.net/404.htm redirect;
        }
    }
}

这样把链接复制给另外一台机器后,就会打开提示错误页面。

以上是小编为您精心准备的的内容,在的博客、问答、公众号、人物、课程等栏目也有的相关内容,欢迎继续使用右上角搜索按钮进行搜索nginx
, lua
, 配置
, nginx配置
盗链
nginx lua防盗链、lua脚本实现防盗链、nginx 防盗链、nginx防盗链配置、nginx图片防盗链,以便于您获取更多的相关知识。

时间: 2024-09-27 01:11:36

通过lua来配置实现Nginx服务器的防盗链功能_nginx的相关文章

Nginx服务器下防盗链的方法介绍_nginx

修改 /usr/local/nginx/conf/nginx.conf 这个配置文件. 找到 location ~ .*\.(gif|jpg|jpeg|png|bmp|swf)$ { expires 30d; }[/code] 修改成: location ~ .*\.(gif|jpg|jpeg|png|bmp|swf)$ { valid_referers none blocked *.jannn.com jannn.com; if($invalid_referer) { rewrite ^/ y

Nginx Web服务图片及软件下载防盗链功能的实现

图片及软件下载的防盗链功能一直是站长最头痛的问题!消耗服务器资源与带宽资源,而自身网站却没有获得任何的流量和IP,特别是迅雷盗链现象更为严重,吃光服务器事带宽!现针对Linux系统下的Nginx http://www.aliyun.com/zixun/aggregation/17117.html">Web服务器环境中图片及软件下载防盗链功能的实现给大家抛砖引玉! web搭配环境下面利用HttpAccessKeyModule模块做Nginx防盗链的. 一:一般的防盗链如下: location

IIS7集成模式~对图像服务器进行防盗链设计

IIS7有集成模式与经典模式两种,经典模式与IIS6进行了很好的兼容,在发布站点后,使用经典模式时,IIS会读取网站自己的web.config,而集成模式是走IIS自己提供的默认的web.config. 我们今天对图像服务器进行一个设计,使我们网站的图像成功进行防盗链,即从别的网站无法访问和下载我们网站的图像,呵呵. 注意的问题: 在IIS7里进行handler设置时,只能对一次对一种文件进行约束,不能用逗号把多个扩展名分开,表看下面图中,虽然"示例"是用逗号分开的,但实际中根据无法实

为Node.js程序配置使用Nginx服务器的简明教程_nginx

Node.js是一个基于Chrome JavaScript运行时建立的平台, 用于方便地搭建响应速度快.易于扩展的网络应用.Node.js 使用事件驱动, 非阻塞I/O 模型而得以轻量和高效,非常适合在分布式设备上运行的数据密集型的实时应用,如实时聊天等等.然而对于gzip编码,静态文件,HTTP缓存,SSL处理,负载平衡和反向代理等,都可以通过nginx来完成,从而减小node.js的负载,并通过nginx强大的缓存来节省网站的流量从而提高网站的加载速度.流程图 nginx配置如下: http

配置解决Nginx服务器中WordPress路径不自动加斜杠问题_nginx

问题是这样的:我习惯在博客地址后面直接加"wp-admin"敲回车进入WordPress后台,但是进去以后发现不管我点任何一个管理子项,一律404(找不到页面),瞬间我就囧了,这是神马状况... 仔细看了一下管理子项的链接,发现他们全是类似"//www.jb51.net/blog/edit.php"这样的,关键就在于他们都少了"/wp-admin/"这条路径,路径都不对了,肯定404呗... 知道问题在哪就简单了,而且答案肯定还是在Nginx的重

使Nginx服务器支持.htaccess的方法_nginx

可能很多朋友都常用nginx不支持.htaccess,只有apache才支持.htaccess文件,其实这是错误的看法nginx也是支持.hatccess的哦,下面我来给各位总结一下配置方法. 其实nginx和.htaccess一点关系都没有,只是一大堆人深受apache的影响觉得nginx应该也要支持.htaccess功能.在nginx的配置中直接include .htaccess文件就好 include /站点目录/.htaccess; 多么简单,但是更让人哭笑不得的是有大部分人根本就不知道

国内一些常用PHP的CMS的Nginx服务器的伪静态规则整理_nginx

但很多网友还是不太了解Nginx服务器的伪静态规则的,而如果你安装的是一些常用的程序,如WordPress,PHPCMS,ECSHOP,SHOPEX,Discuz 7,那伪静态规则就有现成的了.为方便各位站长,收集了这几个常用程序的伪静态规则. WordPress伪静态规则 复制代码 代码如下: location / { index index.html index.php; if (-f $request_filename/index.html){ rewrite (.*) $1/index.

Nginx中图片防盗链设置方法详解

由于有时候一些其他网站会调用本站的图片,nginx本身是可以屏蔽其他网站调用本站图片,方式如下: 根据后缀: location ~ \.(gif|jpg|png|swf|flv|bmp)$ {     valid_referers none blocked *. 111cn.net;     if ($invalid_referer) {     return 404; } } 根据目录:  location /images/ {   root /web/site/www/;   valid_r

编写Go程序对Nginx服务器进行性能测试的方法_nginx

 目前有很多提供Go语言HTTP应用服务的方法,但其中最好的选择取决于每个应用的实际情况.目前,Nginx看起来是每个新项目的标准Web服务器,即使在有其他许多不错Web服务器的情况下.然而,在Nginx上提供Go应用服务的开销是多少呢?我们需要一些nginx的特性参数(vhosts,负载均衡,缓存,等等)或者直接使用Go提供服务?如果你需要nginx,最快的连接机制是什么?这就是在这我试图回答的问题.该基准测试的目的不是要验证Go比nginx的快或慢.那将会很愚蠢. 下面是我们要比较不同的设置