Запрет на hotlinking

Сегодня нас качественно досили, перекрыли ботов фильтрами, но CPU до положенного уровня не сбросилось, ставить апач статус не хотелось.
Стали смотреть почему не падает CPU до положенных нашему серверу 1-3%.
Оказалось проблема с выдачей статистики, (в нашем случае изображений) другим сайтам.
Другими словами, запретим hotlinking для всех, кроме othersite.com — «дружественного» сайта. В конфиг nginx дописываем:
location ~ \.(jpg|jpeg|bmp|jif|bmp|gif|png)$ {
                root   /path/to/public_html/;
                valid_referers server_names none blocked www.othersite.com *.othersite.com;
                if ($invalid_referer) {
                return 403;
                }
            }

В общем после этого CPU упала, и разгрузилось 10% RAM.
Но после дидоса думаю снимать, так как картинки все же картинками, это беклинки и трафик, которые мы так любим.

3 комментария

avatar
а как же гугл/яша/бинг?
avatar
location ~ \.(jpg|jpeg|png|gif)$ {
        root   /var/www/site.com;
        valid_referers server_names none blocked
	*.google.com 
        *.yandex.ru 
        *.feedburner.com
        facebook.com
        vk.com;
        if ($invalid_referer) {
            return 403;
        }
    }

или если не запрещать то просто редирект на свою какую то картинку
location ~ \.(jpg|jpeg|png|gif)$ {
root   /var/www/site.com;
valid_referers server_names none blocked 
*.google.com 
*.feedburner.com 
*.yandex.ru 
*.facebook.com 
vk.com;
if ($invalid_referer) {
rewrite ^ /nohotlinking.jpg last;
}
}
location = /nohotlinking.jpg {
root /var/www/site.com/;
}
avatar
твиттер забыл
Только зарегистрированные и авторизованные пользователи могут оставлять комментарии.