外观
防盗链配置
盗链:盗链是指服务提供商自己不提供服务的内容,通过技术手段绕过其他有利益的最终用户界面(如广告),直接在自己的网站上向最终用户提供其他服务提供商的服务内容,骗取最终用户的浏览和点击率。受益者不提供资源或提供很少的资源,而真正的服务提供商却得不到任何的收益。
在访问 https://www.baidu.com 时,百度内的图片所在域名却不是 baidu.com ,而是 bdstatic.com 域名。这个域名内的资源只允许 baidu.com 有关域名访问,而不允许其他域名访问,靠的是请求时传递过去的 referer 参数值判断。
在 Nginx 中,最常使用的是通过 Referer 参数判断。在上面的例子中,如果 referer 字段的值为 https://www.baidu.com,Nginx 就可以返回正常的资源,否则返回错误的资源,即提示用户你无权访问。
server {
listen 80;
server_name localhost;
location / {
root /usr/share/nginx/html/80;
index index.html;
}
}
server {
listen 81;
server_name localhost;
root /usr/share/nginx/html/81;
# 如果请求的是 error.png,直接返回该文件,不触发重定向
location = /error.png {
try_files $uri =404;
}
location ~*\.(png)$ {
valid_referers none blocked taobao.com;
if ($invalid_referer) {
# 如果请求的是 error.png,就不再进行重定向,直接返回
rewrite ^ /error.png break;
}
}
}然后编辑 hosts 文件(Ubuntu 的 hosts 文件在 /etc/hosts 中),添加一条 127.0.0.1 taobao.com ,它的意思是将域名 taobao.com 解析至 127.0.0.1 中。
在浏览器中依次输入 localhost,会返回错误的图片,而访问 taobao.com,返回的是正确的图片。