Поиск по сайту:
Легче найти ошибку, чем истину (И. Гёте).

Как заблокировать хотлинкинг с помощью Nginx

18.02.2021
Как заблокировать хотлинкинг с помощью Nginx

Nginx — это легкий веб-сервер, способный обрабатывать огромное количество запросов в определенный момент времени, не загружая сервер. Он содержит сложные функции, такие как асинхронная обработка, поддержка ipv6, загрузчик кеша, поддержка http/2, горячая ссылка на блоки, пулы потоков, SPDY и SSL и многое другое. Среди них одна из самых важных функций для любого веб-сайта в целом — это блокировка хотлинкинга. Горячие ссылки — это злонамеренная практика, часто применяемая некоторыми мелкими веб-мастерами, когда они не могут позволить себе стоимость полосы пропускания и, таким образом, в конечном итоге берут ее откуда-то еще. Это мешает законным веб-мастерам использовать пропускную способность, за которую они заплатили. Вдобавок к этому связанный ресурс может быть недоступен для пользователей, которые посещают исходный веб-сайт, когда полоса пропускания, выделенная для исходного веб-мастера, исчерпана, а владелец сайта не платил за чрезмерно потребляемую пропускную способность. В общем, чтобы сохранить целостность, горячие ссылки на веб-сайты должны быть недоступны, и в этой статье рассказывается, как это легко сделать.

 

Подготовка

В подготовительном сегменте общие инструкции для обоих указанных ниже методов отменяются. Очевидно, что важно иметь консоль для доступа к серверу через SSH и правильный текстовый редактор, например nano, для открытия файла конфигурации Nginx. Как только оба будут получены, используйте следующие команды, чтобы открыть, сохранить и применить изменения. Следующие шаги предполагают, что пользователь уже получил доступ к серверу через SSH.

  • Введите следующую команду, чтобы открыть файл конфигурации Nginx по умолчанию. Если у каждого домена есть отдельный файл конфигурации, используйте его имя вместо имени по умолчанию.
nano /etc/nginx/sites-available/default
  • В файле по умолчанию или в файле конфигурации введите коды, указанные в одном из указанных ниже методов. Обязательно используйте только один из них.
    • Используйте следующую команду, чтобы проверить файл конфигурации перед его переводом в рабочий режим.
    nginx -t
    • Если все в правильном порядке, введите следующую команду, чтобы изменения вступили в силу.
    sudo systemctl restart nginx

 

Читать  Как использовать CORS с Nginx

Метод 1: Общий метод

Общий метод очень легко реализовать и понять, поскольку он содержит только блок местоположения. Кроме того, он блокирует запросы только к определенным форматам файлов вместо того, чтобы блокировать каждый запрос от недействительных ссылок на сервер.

  1. Скопируйте следующий фрагмент кода.
  2. Откройте файл nginx по умолчанию, как показано на этапе «Подготовка».
  3. Вставьте скопированный фрагмент кода под первый блок местоположения, найденный в файле по умолчанию. В nginx нечувствительность к регистру в регулярном выражении (~*) всегда имеет приоритет перед прямой косой чертой (/), и поэтому следующий фрагмент кода выполняется перед блоком местоположения прямой косой черты.
  4. Сохраните и закройте файл по умолчанию, а затем выполните 3, 4 шага на этапе «Подготовка», чтобы изменения вступили в силу.

В следующем примере он блокирует запросы к файлам css, gif, ico, jpeg, js, png, woff, woff2, ttf, ttc, otf и eot. В блоке местоположения есть 10 условных операторов. Первый условный оператор позволяет напрямую просматривать ресурсы через веб-браузер, 2- й и 3- й блоки позволяют просматривать ресурсы через исходный сайт (как голые, так и субдомены www), остальные блоки, кроме поиска? q и последний блок позволяют сканерам поисковых систем получать доступ и индексировать ресурсы, что очень важно для индексации изображений как в изображениях Google, так и в изображениях Bing. Поиск? Q позволяет службе кеширования Google получать доступ и сохранять ресурсы вместе со страницей, и, таким образом, страница может быть доступна непосредственно через результат поиска Google, когда сайт находится в автономном режиме.

location ~* \.(css|gif|ico|jpeg|jpg|js|png|woff|woff2|ttf|ttc|otf|eot)$ {
if ($http_referer !~ "^$"){
set $rule_0 1$rule_0;
}
if ($http_referer !~ "^http://nucuta.com/.*$"){
set $rule_0 2$rule_0;
}
if ($http_referer !~ "^http://nucuta.com$"){
set $rule_0 3$rule_0;
}
if ($http_referer !~* "google."){
set $rule_0 4$rule_0;
}
if ($http_referer !~* "search?q=cache"){
set $rule_0 5$rule_0;
}
if ($http_referer !~* "msn."){
set $rule_0 6$rule_0;
}
if ($http_referer !~* "yahoo."){
set $rule_0 7$rule_0;
}
if ($http_user_agent !~* "googlebot"){
set $rule_0 8$rule_0;
}
if ($http_user_agent !~* "msnbot"){
set $rule_0 9$rule_0;
}
if ($http_user_agent !~* "slurp"){
set $rule_0 10$rule_0;
}
if ($http_referer !~* "yandex."){ 
set $rule_0 11$rule_0; 
}
if ($rule_0 = "10987654321"){
return 403;
break;
}
}

Метод 2: метод Valid_Referers

Действительные рефералы — это наиболее удобный и широко признанный метод простой блокировки недействительных рефереров. Он содержит всего две строки по сравнению с предыдущим методом и очень гибкий. Однако его немного сложно переварить, поскольку в нем используются регулярные выражения и другой механизм для блокировки запросов от недопустимых референтов.

  1. Скопируйте следующий фрагмент кода в середину и в самое начало основного блока местоположения.
  2. Замените список доменных имен разрешенными доменными именами, например google, bing, или вашими собственными доменами и т. Д.
  3. Сохраните и закройте файл по умолчанию, а затем выполните 3, 4 шага на этапе «Подготовка», чтобы изменения вступили в силу.
valid_referers none blocked server_names
               *.example.com example.* www.example.org/galleries/
               ~\.google\.;

if ($invalid_referer) {
    return 403;
}

 

Читать  Как установить и использовать Doas в Linux (с 9 примерами)

В основном он имеет два блока кода, valid_referers и условное выражение if с переменной invalid_referer. По умолчанию этот блок кода используется между и в самом начале блока местоположения перед выполнением любого другого кода, но его можно использовать и в любом другом месте, например, между блоком кода местоположения с регулярными выражениями для обнаруживать определенные форматы файлов, чтобы сделать блокировку релевантной для вышеупомянутых форматов файлов, как в методе 1. Как объяснялось ранее, метод содержит только два блока кода, первый блок кода содержит 3 ключевых слова, первое — «нет», когда Поле referer отсутствует в HTTP-запросе, второе поле «блокируется», когда поле referer удаляется какой-либо промежуточной стороной, такой как прокси, брандмауэр и т. д., третье ключевое слово предназначено для указания действительных доменных имен.

Когда имя домена начинается с символа «~», оно рассматривается как регулярное выражение, и поэтому могут использоваться очень сложные шаблоны, но может быть трудно понять, если регулярные выражения известны недостаточно хорошо. Если ни одно из условий не выполняется в операторе valid_referers, переменная invalid_referer устанавливается в пустую строку, в противном случае она устанавливается в 1, что это означает, если поступающий запрос не содержит поля referer или если nginx определил, что поле referer удалено брандмауэром или прокси-сервером, или если в поле referer заданы указанные домены (список допустимых доменных имен), то для недопустимой переменной referer устанавливается пустая строка, и, следовательно, ее условие if не выполняется. Однако, если запрос поступает из домена, который не указан в выражении valid_referers как допустимый домен, он блокируется.

Читать  Две распространенные ошибки при запуске сервера Apache в Linux

 

Вывод

Обязательно примите во внимание этот контент и не допускайте ссылок на свои сайты, размещенные на Nginx.

Если вы нашли ошибку, пожалуйста, выделите фрагмент текста и нажмите Ctrl+Enter.

1 Звезда2 Звезды3 Звезды4 Звезды5 Звезд (2 оценок, среднее: 3,00 из 5)
Загрузка...
Поделиться в соц. сетях:


0 0 голоса
Рейтинг статьи
Подписаться
Уведомить о
guest

**ссылки nofollow

0 комментариев
Старые
Новые Популярные
Межтекстовые Отзывы
Посмотреть все комментарии

Это может быть вам интересно


Рекомендуемое
Из-за текущих условий в мире во время пандемии цифровые инновации…

Спасибо!

Теперь редакторы в курсе.