Задать вопрос
alexjet73
@alexjet73

Как правильно использовать valid_referers в Nginx?

Решил попробовать сделать защиту от хотлинка. Сразу же вышло решение:
location ~* \.(js|css|png|jpg|jpeg|gif|ico)$ {
    				valid_referers none blocked my.domain.ru www.my.domain.ru;
				    if ($invalid_referer) {
				        return   403;
				    }
                expires max;
                log_not_found off;
    }

Однако после nginx -s reload ничего не изменилось. Пробовал вставить изображение в codepen и jsfiddle - всё работает и не блокируется.
Решил проверить работу раздела вообще и поменять домен на левый, все перечисленные файлы сразу же ушли в 403, т.е. если меняешь домен все хорошо. Однако ставишь если свой, то вставляя картинку в jsfiddle и codepen все норм.

Посмотрел потом доки NGINX написано $invalid_referer Пустая строка, если значение поля “Referer” заголовка запроса считается правильным, иначе “1”.
Попробовал поменять на if ($invalid_referer = "1") {, тоже результата нет.

Поясните, пожалуйста, как это вообще работает?
  • Вопрос задан
  • 1918 просмотров
Подписаться 1 Простой 7 комментариев
Решение пользователя Alex К ответам на вопрос (2)
alexjet73
@alexjet73 Автор вопроса
Нашел решение, на одном сайте в комментах. И оно сработало для меня.
Убрать none в строке valid_referers none blocked my.domain.ru www.my.domain.ru;

Буду благодарен, если кто подскажет причину почему с none не работало. Ведь в доках NGINX пишется пример именно с none (как параметр отсутствия Referer)?!
Ответ написан