Dram

Рейтинг
1115
Регистрация
28.06.2008

netwind, вообще не понял о чем вы и языков программирования я увы не знаю. И у меня дебиан, да и мыслей не было че-то куда-то добавлять, это явно не мой уровень.

AGHost, так нужно?

awk -vDate=`date -d'now-1 hours' +[%d/%b/%Y:%H:%M:%S` ' { if ($4 > Date) print $1}' access.log | egrep -v 'ico|png|gif|jpg|swf|\.js|\.php|css' | awk '{if ($9=="200") {print $1}}' | sort | uniq -c | sort -nr | head

попробовал - у меня команда завершилась без результата, может формат лога не такой как у вас?

вот что у меня

[20/Feb/2017:10:25:15 +0300]

Вы сами ответили на свой вопрос - правильно выставить лимит на картинки сложно

А если none уберу - чем это грозит? Кто-то в нормальных вариантах запрашивает картиники без рефера? Поисковые боты вероятно тогда попадут под раздачу... нужно опять с map конструкцию придумывать

---------- Добавлено 18.02.2017 в 15:56 ----------

Если прикрутить белый список - то так правильно? Как описать пустой рефер?

map $whitelist:$http_referer $bad_referer {
default 0;
"0:" 1;
"0:-" 1;
}



---------- Добавлено 18.02.2017 в 16:01 ----------

Или вот так правильно?

map $whitelist:$http_referer $bad_referer {
default 0;
"0:~ ^(|-|_)$)" 1;
}



---------- Добавлено 18.02.2017 в 16:58 ----------

Сделал так

map $whitelist:$http_referer $bad_referer {
default 0;
"1:~(yandex|google|yahoo|bing|facebook|mail|rambler|nigma|ask|bing)" 0;
"0:~(moy-site)" 0;
"0:~ ^(|-|_)$)" 1;
}

и в локешн картинок -

if ($bad_referer) {
return 403;
}

На другом своем сайте вставляю картинку с moy-site - не работает, картинка успешно показывается.

Понимаю что второй мой сайт попал в условие - default 0;

ставлю default 1;

и уже на moy-site перестаю показываться все картинки - вот тут я завяз, что не так?

В location картинок - поправил код выше

А почему защита от хотлинка


location ~* \.(js|css|png|jpg|jpeg|gif|swf|xml|txt|ico|pdf|flv)$ {
valid_referers none blocked server_names ~(moy-sit|yandex|google|yahoo|bing|facebook|mail|rambler|nigma|ask|bing);
if ($invalid_referer) {
return 403;
}
error_page 404 = @fallback;
}

не спасает от таких запросов

37.112.231.174 - - [18/Feb/2017:06:59:26 +0300] "GET /images/92/7a0a31e910b.jpg HTTP/1.1" 200 13988 "-" "Mozilla/5.0 (Windows NT 6.1; WOW64; Trident/7.0; rv:11.0) like Gecko"

Таки да :))) вы правы, тупанул, убираю :)))

Вот еще что придумал - многие боты не ставят вообще или ставят кривой рефер.

Будет полезно добавить

if ($http_referer !~* ^($|http://|https://) ){
return 403;
}

Да я уже поменял - надоело гуглить - тормознул мускуль, надеюсь юзеры не прокляли меня за 10 сек. простоя :)

l1mon, я вас наверное удивлю - но нужно сделать отдельные локейшены для пхп и "всего остального"

location / {
limit_req....
}

+

location ~ \.php$ {
limit_req....
}
Всего: 6927