Nginx

Як заблокувати гарячі посилання за допомогою Nginx

Як заблокувати гарячі посилання за допомогою Nginx
Nginx - це легкий веб-сервер, здатний обробляти величезну кількість запитів за певний час, не роблячи при цьому сервер зайнятим. Він містить складні функції, такі як асинхронна обробка, підтримка ipv6, завантажувач кешу, підтримка http / 2, блокування гарячих посилань, пули потоків, SPDY та SSL та багато іншого. Серед них однією з найважливіших функцій для будь-якого веб-сайту загалом є блокове гаряче посилання. Гарячі посилання - це зловмисна практика, яку часто роблять певні дрібні веб-майстри, коли вони не можуть дозволити собі витрати на пропускну здатність, і, таким чином, вони в кінцевому підсумку беруть її звідкись ще. Це заважає законним веб-майстрам використовувати смугу пропускання, за яку вони заплатили. Крім того, зв’язаний ресурс може бути недоступний для користувачів, які відвідують оригінальний веб-сайт, коли пропускна здатність, виділена для початкового веб-майстра, закінчується, а власник сайту не оплачує надмірно спожиту пропускну здатність. Загалом, для збереження цілісності доступність веб-сайтів слід припинити, і цей посібник навчає, як це легко зробити.

Підготовка

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

nano / etc / nginx / sites-available / default

Спосіб 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, коли сайт офлайн.

місце розташування ~ * \.(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 !~ * "Google.")
встановити $ rule_0 4 $ rule_0;

якщо ($ http_referer !~ * "пошук?q = кеш ")
встановити $ 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 !~ * "нечітка")
встановити $ rule_0 10 $ rule_0;

якщо ($ rule_0 = "10987654321")
повернення 403;
перерва;

Спосіб 2: Метод Valid_Referers

Дійсні судді - це найзручніший і загальновизнаний метод блокування недійсних суддів з легкістю. Він містить лише два рядки порівняно з попереднім методом і дуже гнучкий. Однак це трохи важко засвоїти, оскільки це стосується регулярних виразів та іншого механізму блокування запитів від недійсних суддів.

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

valid_referers немає заблокованих імен серверів

*.Linux.com linux.* www.Linux.com / about /
~ \.Linux \.;
 
if ($ invalid_referer)
повернення 403;

В основному він має два блоки коду, valid_referers та умовний вираз if зі змінною invalid_referer. За замовчуванням цей блок коду використовується між і на самому початку блоку розташування перед виконанням будь-якого іншого коду, але його можна використовувати і в будь-якому іншому місці, наприклад, між блоком коду місцезнаходження з регулярними виразами до виявити конкретні формати файлів, щоб зробити блокування актуальним для вищезазначених форматів файлів, як у способі 1. Як пояснювалося раніше, метод містить лише два блоки коду, перший блок коду містить 3 ключові слова, перший з них - "немає", коли в запиті HTTP відсутнє поле реферала, другий "блокується" при видаленні поля референта будь-якою середньою стороною, такою як проксі, брандмауер тощо., третє ключове слово призначене для вказання дійсних доменних імен.

Коли доменне ім'я починається із символу «~», це розглядається як регулярний вираз, і, отже, можуть використовуватися дуже складні шаблони, але може бути важко зрозуміти, якщо регулярні вирази невідомі. Якщо в операторі valid_referers не виконується жодна з умов, для змінної invalid_referer встановлено порожній рядок, інакше встановлено значення 1, що означає, якщо прийдешній запит не містить поля реферала або якщо nginx визначив, що поле референта видалено брандмауером або проксі-сервером, або якщо для поля реферала встановлено вказані домени (дійсний список імен доменів), тоді недійсна змінна реферера встановлюється порожнім рядком, а отже, якщо умова не виконується. Однак, якщо запит надходить з домену, який не вказаний у виразі valid_referers як дійсний домен, він блокується.

ВИСНОВОК

Будь ласка, не забудьте розглянути цей вміст та запобігти гарячим посиланням на ваших сайтах, розміщених у Nginx.

Топ 5 карт для захоплення ігор
Ми всі бачили і любили потокові ігри на YouTube. PewDiePie, Jakesepticye та Markiplier - лише деякі з найкращих геймерів, які заробили мільйони, заван...
Як розробити гру на Linux
Десять років тому не так багато користувачів Linux передбачали, що їх улюблена операційна система колись стане популярною ігровою платформою для комер...
Open Source Ports of Commercial Game Engines
Free, open source and cross-platform game engine recreations can be used to play old as well as some of the fairly recent game titles. This article wi...