发布于 2016-01-31 07:06:36 | 251 次阅读 | 评论: 0 | 来源: 网友投递

这里有新鲜出炉的Nginx开发从入门到精通,程序狗速度看过来!

Nginx WEB服务器

Nginx 是一个高性能的 HTTP 和 反向代理 服务器,也是一个 IMAP/POP3/SMTP 代理服务器。 Nginx 是由 Igor Sysoev 为俄罗斯访问量第二的 Rambler.ru 站点开发的,第一个公开版本0.1.0发布于2004年10月4日。其将源代码以类BSD许可证的形式发布,因它的稳定性、丰富的功能集、示例配置文件和低系统资源的消耗而闻名。


这篇文章主要介绍了通过lua来配置实现Nginx服务器的防盗链功能的方法,这里主要讲解生成链接的Nginx配置,需要的朋友可以参考下

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


server  
{  
    listen    80;  
    server_name download.phperz.com;  
    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.phperz.com;  
    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.phperz.com/404.htm redirect;  
        }  
    }  
} 

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



最新网友评论  共有(0)条评论 发布评论 返回顶部

Copyright © 2007-2017 PHPERZ.COM All Rights Reserved   冀ICP备14009818号  版权声明  广告服务