linux

如何配置LNMP防盗链

小樊
43
2025-10-30 20:31:12
栏目: 编程语言

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;
}

参数说明

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

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。步骤如下:

三、测试与生效

  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
    

四、注意事项

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

0
看了该问题的人还看了