Я использую owncloud и иногда делюсь ссылками с людьми через Facebook.
Меня беспокоит автоматическое сканирование, поэтому я хотел бы запретить Facebook доступ к моему серверу owncloud.thomas-steinbrenner.net (он посещает все ссылки, чтобы получить изображения предварительного просмотра, текст предварительного просмотра и т. Д.)
Есть ли способ сделать это в nginx? Как через имя хоста или через агента? (Я чувствую, что использование IP - это игра, в которой нельзя выиграть).
Если нет: есть ли другой способ, как проект черного списка со списком gov-, FB- и т. Д. -IP для iptables?
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$;
}
tcp-оболочки? Я считаю, что может делать отказы на основе хоста / домена. Также, пробовали ли вы простой robots.txt, были бы удивлены, если бы facebook их не уважал. Я думаю, они не могли позволить себе споры, игнорируя их.