有没有办法根据主机名或代理拒绝访问?

我正在使用owncloud,有时通过Facebook与人分享链接。

我担心自动抓取,所以我想拒绝Facebook访问我的owncloud.thomas-steinbrenner.net服务器(它访问所有链接,以获得预览图片,预览文本等)

有没有办法在nginx中做到这一点? 像通过主机名或代理? (我觉得使用IP是一个不能赢的游戏)。

如果没有:是否有其他方式像黑名单项目列表的政府,FB-等iptables的iptables?

TCP包装? 我相信可以做基于主机/域的拒绝。 也有你试过一个简单的robots.txt会惊讶,如果Facebook不尊重他们。 我认为他们无法承受忽视它们的争议。

nginx支持开箱即用的$ http_user_agent值:

if ($http_user_agent ~* (facebook|google)) { ... } 

主机名validation可以通过第三方模块完成 – ngx_http_rdns_module: http ://wiki.nginx.org/HttpRdnsModule( https://github.com/flant/nginx-http-rdns

喜欢这个:

 location / { rdns double; rdns_deny ^.*\.(facebook|google)\.com$; }