Nginx

Как да блокирам Hotlinking с Nginx

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

Подготовка

В сегмента на подготовката се свалят общите инструкции за двата споменати по-късно метода. Очевидно е важно да имате конзола за достъп до сървъра през SSH и подходящ текстов редактор като nano, за да отворите конфигурационния файл на Nginx. След като и двете са придобити, използвайте следните команди, за да отворите, запишете и приложите промените. Следващите стъпки предполагат, че потребителят вече е имал достъп до сървъра през 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 условни израза. Първият условен оператор позволява на ресурсите да се преглеждат директно през уеб браузъра, 2nd и 3rd блокове позволяват да се преглеждат ресурсите през оригиналния сайт (голи и поддомейни www), останалите блокове с изключение на търсенето?q и последният блок позволяват на роботите на търсачките достъп и индексират ресурсите, което е много важно за индексиране на изображенията както в google изображения, така и в bing изображения. Търсенето?q позволява достъп до кеш услугата на Google и запазване на ресурсите заедно със страницата и по този начин страницата може да бъде достъпна директно чрез резултата от търсенето с google, когато сайтът е офлайн.

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

if ($ http_referer !~ "^ http: // nucuta.com /.* $ ")
задайте $ rule_0 2 $ rule_0;

if ($ http_referer !~ "^ http: // nucuta.com $ ")
задайте $ rule_0 3 $ rule_0;

if ($ http_referer !~ * "google.")
задайте $ rule_0 4 $ rule_0;

if ($ http_referer !~ * "търсене?q = кеш ")
задайте $ rule_0 5 $ rule_0;

if ($ http_referer !~ * "msn.")
задайте $ rule_0 6 $ rule_0;

if ($ 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;

ако ($ 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.

Как да инсталирате и играете Doom на Linux
Въведение в Doom Серията Doom възниква през 90-те години след пускането на оригиналния Doom. Това беше незабавен хит и от този момент нататък серията ...
Vulkan за потребители на Linux
С всяко ново поколение графични карти виждаме, че разработчиците на игри преместват границите на графичната вярност и се приближават една крачка до фо...
OpenTTD срещу Simutrans
Създаването на собствена транспортна симулация може да бъде забавно, релаксиращо и изключително примамливо. Ето защо трябва да сте сигурни, че изпробв...