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

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

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

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

有没有办法在 nginx 中做到这一点?比如通过主机名或代理?(我觉得使用 IP 是一场无法取胜的游戏)。

如果没有:是否有其他方法,例如黑名单项目,其中包含用于 iptables 的政府、FB 等 IP 列表?

答案1

tcp 包装器?我相信它可以进行基于主机/域的拒绝。此外,您是否尝试过一个简单的 robots.txt,如果 Facebook 不尊重它们,您会感到惊讶。我认为他们承受不起忽视它们的争议。

答案2

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

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

主机名验证可以通过第三方模块 ngx_http_rdns_module 完成:http://wiki.nginx.org/HttpRdnsModulehttps://github.com/flant/nginx-http-rdns

像这样:

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

相关内容