我正在使用 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/HttpRdnsModule(https://github.com/flant/nginx-http-rdns)
像这样:
location / {
rdns double;
rdns_deny ^.*\.(facebook|google)\.com$;
}