如果文件被热链接的话我想提供原始文件,但是如果有人在浏览器中访问该文件则重写 URL。
我曾多次见过这样的热链接示例:
location /pictures/ {
valid_referers none blocked mywebsite.com *.mywebsite.com;
if ($invalid_referer) {
return 403;
}
}
但是,我如何引用有效的引用者?如果另一个页面链接到请求的原始文件(热链接),我会尝试提供该文件。
如果有人在浏览器中查看该文件,我想添加一些 HTML(即重写到另一个 URL);
除此以外还有哪些可用的变量$invalid_referer
?
我试过了:
if( !$invalid_referer){
return 403; #allow hot-linking only;
}
并且在文档中没有看到其他可用变量的提及。http://nginx.org/en/docs/http/ngx_http_referer_module.html
答案1
您可以检查$invalid_referer
来自文档:
指定“Referer”请求标头字段值,这将导致嵌入的 $invalid_referer 变量设置为空字符串。否则,该变量将设置为“1”。搜索匹配项不区分大小写。
if($invalid_referer = ""){
return 403; #allow hot-linking only;
}
你也可以做
if($invalid_referer != "1"){
return 403; #allow hot-linking only;
}