NGINX 可用的变量

NGINX 可用的变量

如果文件被热链接的话我想提供原始文件,但是如果有人在浏览器中访问该文件则重写 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;
}

相关内容