首页主机资讯如何配置LNMP防盗链

如何配置LNMP防盗链

时间2025-10-31 16:39:03发布访客分类主机资讯浏览1172
导读:LNMP环境下Nginx防盗链配置指南 在LNMP(Linux+Nginx+MySQL+PHP)架构中,Nginx作为Web服务器是实现防盗链的核心组件。防盗链的本质是通过检查HTTP请求的Referer头部,判断资源请求是否来自合法域名,...

LNMP环境下Nginx防盗链配置指南

在LNMP(Linux+Nginx+MySQL+PHP)架构中,Nginx作为Web服务器是实现防盗链的核心组件。防盗链的本质是通过检查HTTP请求的Referer头部,判断资源请求是否来自合法域名,从而阻止非法盗用。以下是详细的配置步骤及注意事项:

一、基础防盗链配置(推荐)

1. 打开Nginx配置文件
LNMP环境中,虚拟主机配置文件通常位于/usr/local/nginx/conf/vhost/(如yourdomain.conf)或/etc/nginx/sites-available/(如default.conf)。使用文本编辑器(如vim)打开对应文件:

vim /usr/local/nginx/conf/vhost/yourdomain.conf

2. 添加防盗链规则
server块内添加以下配置(以图片、CSS、JS文件为例):

location ~* \.(jpg|jpeg|png|gif|ico|css|js)$ {
    
    # 设置允许的Referer来源:none(直接访问)、blocked(被Nginx阻止的Referer)、合法域名
    valid_referers none blocked yourdomain.com www.yourdomain.com;

    
    # 如果Referer无效,返回403 Forbidden(或重定向到自定义图片)
    if ($invalid_referer) {
    
        # 方式1:返回403错误(简单有效)
        return 403;
    
        
        # 方式2:重定向到默认防盗链图片(需确保图片路径可外链)
        # rewrite ^/ http://yourdomain.com/static/nohotlink.jpg;

    }
    
    
    # 可选:设置资源缓存时间(减少重复请求)
    expires 30d;

}

参数说明

  • location ~* \.(jpg|jpeg|png|gif|ico|css|js)$:匹配所有以指定后缀结尾的静态资源请求(不区分大小写);
  • valid_referers:定义合法的Referer来源,none允许直接访问(如用户手动输入URL),blocked允许被Nginx拦截的Referer(如某些爬虫),yourdomain.comwww.yourdomain.com为你的合法域名;
  • if ($invalid_referer):若Referer不在valid_referers列表中,则执行后续操作(返回403或重定向);
  • expires 30d:设置资源缓存时间为30天,提升访问速度。

二、高级防盗链配置(可选)

1. 针对特定目录配置防盗链
若仅需保护/images/目录下的资源,可将location改为目录匹配:

location /images/ {
    
    alias /data/www/yourdomain/images/;
      # 资源实际路径
    valid_referers none blocked yourdomain.com www.yourdomain.com;

    if ($invalid_referer) {
    
        return 403;

    }

}

2. 使用ngx_http_accesskey_module模块(增强安全性)
通过MD5加密生成动态访问密钥,防止伪造Referer。步骤如下:

  • 编译安装模块:下载ngx_http_accesskey_module,修改Nginx编译配置并重新编译(需重新安装Nginx);
  • 配置Nginx:在location中添加以下规则:
    location /protected/ {
        
        accesskey on;
                              # 开启accesskey模块
        accesskey_hashmethod md5;
                  # 加密方式为MD5
        accesskey_arg "key";
                       # URL中密钥参数名(如?key=xxx)
        accesskey_signature "yourpassword$remote_addr";
      # 加密字符串(密码+用户IP)
    }
        
    
  • 生成访问链接:通过PHP或其他语言生成带密钥的URL(如http://yourdomain.com/protected/file.zip?key=md5(yourpassword+用户IP))。

三、测试与生效

  1. 测试配置语法
    修改配置文件后,运行以下命令检查语法是否正确:

    /usr/local/nginx/sbin/nginx -t
    

    若显示configuration file /usr/local/nginx/conf/nginx.conf test is successful,则表示配置正确。

  2. 重新加载Nginx
    使配置生效,无需重启服务:

    /usr/local/nginx/sbin/nginx -s reload
    

    或使用systemctl(适用于systemd系统):

    systemctl reload nginx
    

四、注意事项

  • 避免误拦截valid_referers中的none必须保留,否则直接访问资源(如用户手动输入URL)也会被拦截;
  • 密钥安全:若使用secure_link模块,密钥(如segredo)需严格保密,定期更换;
  • 时间同步:使用secure_link时,Nginx服务器与PHP服务器的时间需保持一致(误差不超过5分钟),否则会导致合法链接失效;
  • 性能影响if指令会轻微影响Nginx性能,建议仅在必要时使用,避免在location中过度嵌套if

通过以上配置,LNMP环境中的Nginx可有效防止资源被盗链,保护服务器带宽及内容版权。

声明:本文内容由网友自发贡献,本站不承担相应法律责任。对本内容有异议或投诉,请联系2913721942#qq.com核实处理,我们将尽快回复您,谢谢合作!


若转载请注明出处: 如何配置LNMP防盗链
本文地址: https://pptw.com/jishu/740066.html
Linux LNMP如何更新系统 debian deluser使用说明

游客 回复需填写必要信息