Назад | Перейти на главную страницу

Есть ли способ запретить доступ на основе имени хоста или агента?

Я использую 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 их не уважал. Я думаю, они не могли позволить себе споры, игнорируя их.