nginx设置防盗链

cat jingxiang.conf
server {
        listen       80;
        server_name  jingxiang.zqfstack.com;
        location / {
                root /data/jingxiang;
                index  index.html index.htm;

        }

        location /centos/ {
                root /data/jingxiang;
                charset utf-8;
                autoindex on; #开启目录游览功能
                autoindex_exact_size off;  #显示大小
                autoindex_localtime on;   #显示时间
                valid_referers none  server_names *.zqf.com;
                if ($invalid_referer) {
                       return 403;
                    }
                }
}
# valid_referers 是 Nginx 用来检查请求来源(Referer)的指令。
# none 表示允许没有 Referer 的请求(有些浏览器或下载工具可能不会发送 Referer)
# server_names 表示允许当前 server 块下定义的 server_name 域名作为合法来源。
# 只允许来自自己域名、*.zqf.com域名或没有 Referer 的请求访问,否则返回 403 禁止访问。

我们做一个跨域嵌套测试:

cat test.conf
server {
        listen       80;
        server_name  test.zqfstack.com;
        location / {
                root /data/test;
                index  index.html index.htm;
        }
}


cat /data/test/index.html
<!DOCTYPE html>
<html lang="zh-CN">
<head>
    <meta charset="UTF-8">
    <title>测试图片引用</title>
</head>
<body>
    <h1>测试图片显示</h1>
    <p>下面是引用的图片:</p>
    <img src="http://jingxiang.zqfstack.com/centos/3678334-20250816192400406-781419125.png" alt="测试图片" />
</body>
</html>

访问test.zqfstack.com:
20250819191328
可以看到返回了403拒绝访问。

posted @ 2025-08-14 19:22  阿峰博客站  阅读(10)  评论(0)    收藏  举报