图片防盗链,只允许图片在特定的站点内访问和URL访问,不允许图片在其他站点上访问。
如:图片是 A 服务器的图片,但是被其他不法站点展示在页面上。
在 nginx 配置中 的 server 增加 location 限制
# 只有gif|jpg|jpeg|png|bmp|swf后缀进入该位置
# 指定防篡改的文件类型
location ~*\.(gif|jpg|jpeg|png|bmp|swf)& {
# valid_referers 指定资源访问的合法方式
# 直接通过url访问,无referer值的情况
# blocked referer值被防火墙修改
# 1、允许url访问 和 127.0.0.1:8080 的网站访问
valid_referers none blocked 127.0.0.1:8080;
# 1、允许url访问 和 *.baidu.com 的网站访问
valid_referers none blocked *.baidu.com;
if ($invalid_referer) {
# 不符合访问情况,则返回 403 ,也可以重定向到指定的资源
return 403;
}
}
配置示例:
server {
listen 80;
server_name edo.test.com;
root "D:/xxx";
location ~*\.(gif|jpg|jpeg|png|bmp|swf)& {
valid_referers none blocked *.test.com;
if ($invalid_referer) {
return 403;
}
}
location / {
index index.php index.html error/index.html;
error_page 400 /error/400.html;
error_page 403 /error/403.html;
error_page 404 /error/404.html;
error_page 500 /error/500.html;
error_page 501 /error/501.html;
error_page 502 /error/502.html;
error_page 503 /error/503.html;
error_page 504 /error/504.html;
error_page 505 /error/505.html;
error_page 506 /error/506.html;
error_page 507 /error/507.html;
error_page 509 /error/509.html;
error_page 510 /error/510.html;
include D:/xxx/nginx.htaccess;
autoindex off;
}
location ~ \.php(.*)$ {
fastcgi_pass 127.0.0.1:9004;
fastcgi_index index.php;
fastcgi_split_path_info ^((?U).+\.php)(/?.+)$;
fastcgi_param SCRIPT_FILENAME $document_root$fastcgi_script_name;
fastcgi_param PATH_INFO $fastcgi_path_info;
fastcgi_param PATH_TRANSLATED $document_root$fastcgi_path_info;
include fastcgi_params;
}
}