Nginx

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

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

Подготовка

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

нано / и т. д. / nginx / сайты-доступные / по умолчанию

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

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

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

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

расположение ~ * \.(css | gif | ico | jpeg | jpg | js | png | woff | woff2 | ttf | ttc | otf | eot) $
если ($ http_referer !~ "^ $")
установить $ rule_0 1 $ rule_0;

если ($ http_referer !~ "^ http: // nucuta.com /.* $ ")
установить $ rule_0 2 $ rule_0;

если ($ http_referer !~ "^ http: // nucuta.com $ ")
установить $ rule_0 3 $ rule_0;

если ($ http_referer !~ * "гугл.")
установить $ rule_0 4 $ rule_0;

если ($ http_referer !~ * "поиск?q = cache ")
установить $ rule_0 5 $ rule_0;

если ($ http_referer !~ * "msn.")
установить $ rule_0 6 $ rule_0;

если ($ http_referer !~ * "yahoo.")
установить $ rule_0 7 $ rule_0;

если ($ http_user_agent !~ * "googlebot")
установить $ rule_0 8 $ rule_0;

если ($ http_user_agent !~ * "msnbot")
установить $ rule_0 9 $ rule_0;

если ($ http_user_agent !~ * "slurp")
установить $ rule_0 10 $ rule_0;

if ($ rule_0 = "10987654321")
возврат 403;
перерыв;

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

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

  1. Скопируйте следующий фрагмент кода между и в самое начало основного блока местоположения.
  2. Замените список доменных имен разрешенными доменными именами, например google, bing или вашими собственными доменами и т. Д.
  3. Сохраните и закройте файл по умолчанию, а затем выполните 3, 4 шага на этапе «Подготовка», чтобы изменения вступили в силу.

valid_referers нет заблокированных server_names

*.linux.com linux.* www.linux.com / about /
~ \.linux \.;
 
if ($ invalid_referer)
возврат 403;

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

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

ЗАКЛЮЧЕНИЕ

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

Экранный трекпад и указатель мыши AppyMouse для планшетов с Windows
Пользователи планшетов часто пропускают указатель мыши, особенно когда они привыкли пользоваться ноутбуками. Смартфоны и планшеты с сенсорным экраном ...
Средняя кнопка мыши не работает в Windows 10
В средняя кнопка мыши помогает пролистывать длинные веб-страницы и экраны с большим объемом данных. Если это прекратится, вы в конечном итоге будете и...
Как изменить левую и правую кнопки мыши на ПК с Windows 10
Совершенно нормально, что все устройства компьютерной мыши эргономичны для правшей. Но есть мышиные устройства, специально разработанные для левшей ил...