如何配置LNMP防盗链
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.com和- www.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))。
三、测试与生效
- 
测试配置语法: 
 修改配置文件后,运行以下命令检查语法是否正确:/usr/local/nginx/sbin/nginx -t若显示 configuration file /usr/local/nginx/conf/nginx.conf test is successful,则表示配置正确。
- 
重新加载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
