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:
可以看到返回了403拒绝访问。