NGINX静态资源防盗链及缓存设置

######################### 静态资源防盗链及缓存设置·开始 #########################

location ~* \.(css|js|png|jpg|jpeg|gif|ico|flv|mp4|swf)$ {

    # 防盗链原理:
    # ngx_http_referer_module模块能够检查请求头的Referer字段,如果Referer不在允许列表内则特定变量$invalid_referer的值为1,否则为0,根据$invalid_referer的值可决定是否拒绝访问。
    #
    # 细节说明:
    # valid_referers指令能够启用ngx_http_referer_module模块,可在valid_referers指令右侧设置允许列表(相当于白名单),每个允许项之间用空格隔开。
    #
    # 允许项可能值及含义:
    # none          :请求头没有Referer字段,在浏览器地址栏直接输入静态资源URL进行访问的请求就是没有Referer字段的请求,一般不需要将该参数加入允许列表。
    # blocked       :请求头有Referer字段但其值已被防火墙或代理服务器删除,一般不需要将该参数加入允许列表。
    # server_names  :当前server{}节点的server_name,一般都会将该参数加入允许列表。
    # *.example.com :跨域域名,如有多个域名可用空格隔开,注意它不是server_names参数的附加内容。
    #
    # 细节说明:
    # 在图片上右键并在新标签页中打开图片是有Referer的(可使用开发者工具-Network查看请求头),而在浏览器地址栏直接输入图片URL进行访问则没有Referer。
    #
    # 参考文档(官方):http://nginx.org/en/docs/http/ngx_http_referer_module.html#valid_referers

    valid_referers server_names;
    if ($invalid_referer) {
        # 盗链处理方式①:跳转到指定页面
        #rewrite ^/ https://www.baidu.com/img/PCtm_d9c8750bed0b3c7d089fa7d55720d6cf.png;

        # 盗链处理方式②:返回403错误
        return 403;
    }

    # 缓存30天
    expires 30d;
}

######################### 静态资源防盗链及缓存设置·结束 #########################

Copyright © 2024 码农人生. All Rights Reserved