Appearance
防盗链原理
index.html 中引入的文件,请求时请求头中会有 Referer: http://192.168.44.101/ 字段 表明来源。
如果其它站点中 proxy_pass 指向了我们的资源 或 .html 中内联了我们的资源,可以通过 Referer 来防止非法请求。
nginx
worker_processes 1;
events {
worker_connections 1024;
}
http {
include mime.types;
default_type application/octet-stream;
sendfile on;
keepalive_timeout 65;
server {
listen 80;
server_name www.rainx.top;
location / {
proxy_pass http://192.168.44.102;
}
location ~*/(js|css|img) {
# 防盗链
# 合法的 referer
valid_referers 192.168.44.101 www.rainx.top;
if ($invalid_referer) {
# 如果是无效的 referer
return 403;
}
root html;
index index.html index.htm;
}
error_page 500 502 503 504 /50x.html;
location = /50x.html {
root html;
}
}
}上述配置只要访问时的 Referer 不是 192.168.44.101,就无法访问到该资源。
valid_referers none | blocked | server_names | strings ....;
none
valid_referers none 192.168.44.101 www.rainx.top;
Referer 不存在的情况可以访问,如果存在必须是合法的才能访问。
blocked
检测 Referer 头域的值被防火墙或者代理服务器删除或伪装的情况。这种情况该头域的值不以“http://” 或 “https://” 开头。
server_names
设置一个或多个 URL ,检测 Referer 头域的值是否是这些 URL 中的某一个。