2011-05-03 615 views
3

我如何知道nginx变量$ http_referer未设置或为空?

我收到一些没有http referer的请求。在nginx日志中,$ http_referer显示如下:“ - ”。我想要做的是“回归403”。如果$ http_referer没有被设置或为空,就像在这种情况下一样。

谢谢!

+0

我尝试使用正则表达式,但似乎并不奏效 - 或403我中搜索的结果会告诉我,如果一个nginx的变量设置与否的方法拒绝一切....但我没有找到它呢。 – Clawsy 2011-05-03 09:26:11

+0

如果我的浏览器被配置为永远不会发送任何网站的引用标题,该怎么办? – 2011-05-03 09:26:20

+0

嗯......我真正需要的是拒绝每个访问资源的请求的资源,例如简单的GET,他们没有'任何人'发送它们...例如http_referer ... – Clawsy 2011-05-03 09:28:58

回答

5

http://nginx.org/en/docs/http/ngx_http_referer_module.html#valid_referers

valid_referers server_names ~.; 
if ($invalid_referer) { 
    return 403; 
} 
+0

谢谢..但我遇到了一个错误:'[emerg]:在“valid_referers”指令中没有任何有效的引用者''指定'none'或'blocked'引用者' – Clawsy 2011-05-03 09:39:25

+1

感谢您的回答! – Clawsy 2011-05-03 10:00:09

+0

@Clawsy固定版本用空引用程序阻止每个请求。任何非空引用者都认为是正确的。 – 2011-05-03 10:02:09

0

这个怎么样?

if ($http_referer ~ /^$/) { 
    return 403; 
}