В подготовительном сегменте общие инструкции для обоих указанных ниже методов отменяются. Очевидно, что важно иметь консоль для доступа к серверу через SSH и правильный текстовый редактор, например nano, для открытия файла конфигурации Nginx. Как только оба будут получены, используйте следующие команды, чтобы открыть, сохранить и применить изменения. Следующие шаги предполагают, что пользователь уже получил доступ к серверу через SSH.
nano /etc/nginx/sites-available/default
nginx -t
sudo systemctl restart nginx
Общий метод очень легко реализовать и понять, поскольку он содержит только блок местоположения. Кроме того, он блокирует запросы только к определенным форматам файлов вместо того, чтобы блокировать каждый запрос от недействительных ссылок на сервер.
В следующем примере он блокирует запросы к файлам 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; } }
Действительные рефералы — это наиболее удобный и широко признанный метод простой блокировки недействительных рефереров. Он содержит всего две строки по сравнению с предыдущим методом и очень гибкий. Однако его немного сложно переварить, поскольку в нем используются регулярные выражения и другой механизм для блокировки запросов от недопустимых референтов.
valid_referers нет заблокированных server_names
*.linux.com linux.* www.linux.com/about/ ~\.linux\.;if ($invalid_referer) { return 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.
Заполните форму и наш менеджер перезвонит Вам в самое ближайшее время!
Спасибо! Ваша заявка принята
Спасибо! Ваша заявка принята