Запрет личинга при помощи nginx

K
На сайте с 01.09.2005
Offline
248
4082

ОСFreebsd 9.2

Nginx 1.8.0

Таким правилом запрещаю сайтам кроме некоторых использовать картинки с моего сервера:

#ZAPRET LICHINGA KARTINOK

location ~* ^.+\.(jpg|jpeg|gif|png)$ {

root /usr/home/autorazdel/public_html;

valid_referers none blocked server_names ~(autorazdel|yandex|google|yahoo|bing|facebook|subscribe|feedburner|mail|rambler|nigma|ask|qip|bing);

if ($invalid_referer) {

return 403;

}

error_page 404 = @fallback;

}

но в логах сыпется огромное кол-во ошибки вида:

2015/09/03 17:50:04 [error] 51137#0: *1372865 could not find named location "@fallback", client: 66.249.93.133, server: domain.com, request: "GET /wp-content/uploads/2015/02/Be-the-Worst-but-Still-Nice-Self-Made.jpg HTTP/1.1", host: "domain.com"

Подскажите пожалуйста, как исправить эту ошибку?

Спасибо.

U
На сайте с 09.04.2015
Offline
28
#1

А так не удобней будет?

nginx.conf, раздел http

map $http_referer $bad_hotlink {

default 1;
~(autorazdel|yandex|google|yahoo|bing|facebook|subscribe|feedburner|mail|rambler|nigma|ask|qip) 0;
}

А потом в конфиг любого сайта

location ~* \.(jpg|jpeg|gif|png)$ {

if ($bad_hotlink = 1) {return 444;}
root /usr/home/domain.com/public_html;
}
K
На сайте с 01.09.2005
Offline
248
#2
umercomp:
А так не удобней будет?
nginx.conf, раздел http
map $http_referer $bad_hotlink {

default 1;
~(autorazdel|yandex|google|yahoo|bing|facebook|subscribe|feedburner|mail|rambler|nigma|ask|qip) 0;
}

А потом в конфиг любого сайта
location ~* \.(jpg|jpeg|gif|png)$ {

if ($bad_hotlink = 1) {return 444;}
root /usr/home/domain.com/public_html;
}

перечисленные в фигурных скобках домены это домены которым можно показывать картинки.

U
На сайте с 09.04.2015
Offline
28
#3

kostyk, я так и понял. При реферере, содержащем данные слова, переменной 0 присваивается, в других случаях - 1.

UPD: Наверное, лучше даже так:

map $http_referer $bad_hotlink {
default 1;
~(^https?:\/\/)(www\.)?(autorazdel|yandex|google|yahoo|bing|facebook|subscribe|feedburner|mail|rambler|nigma|ask|qip)(\.) 0;
}
K
На сайте с 01.09.2005
Offline
248
#4
umercomp:
kostyk, я так и понял. При реферере, содержащем данные слова, переменной 0 присваивается, в других случаях - 1.

Спасибо большое буду пробовать.

Только что присмотрелся внимательно, так как сайтов на сервере много, то слишком муторно будет забить главный конфиг nginx.conf переислением имен (autorazdel|yandex|google|yahoo|bing|facebook|subscribe|feedburner|mail|rambler|nigma|ask|qip) всех доменов на сервере

[Удален]
#5

Так сделайте несколько строк:

~(^https?:\/\/)(www\.)?(autorazdel|yandex|google|yahoo|bing|facebook)(\.) 0;
~(^https?:\/\/)(www\.)?(subscribe|feedburner|mail|rambler|nigma|ask|qip)(\.) 0;

Авторизуйтесь или зарегистрируйтесь, чтобы оставить комментарий