Подготовка
В подготовительном сегменте общие инструкции для обоих упомянутых ниже методов сняты. Очевидно, что важно иметь консоль для доступа к серверу через SSH и правильный текстовый редактор, например nano, чтобы открыть файл конфигурации Nginx. После того, как оба будут получены, используйте следующие команды, чтобы открыть, сохранить и применить изменения. Следующие шаги предполагают, что пользователь уже получил доступ к серверу через SSH.
- Введите следующую команду, чтобы открыть файл конфигурации Nginx по умолчанию. Если у каждого домена есть отдельный файл конфигурации, используйте его имя вместо имени по умолчанию.
- По умолчанию или в файле конфигурации введите коды, указанные в одном из указанных ниже методов. Обязательно используйте только один из них.
- Используйте следующую команду, чтобы проверить файл конфигурации, прежде чем переводить его в режим реального времени.
- Если все в правильном порядке, введите следующую команду, чтобы изменения вступили в силу.
Метод 1: Общий метод
Общий метод очень легко реализовать и понять, поскольку он содержит только блок местоположения. Кроме того, он блокирует запросы к определенным форматам файлов только вместо того, чтобы блокировать каждый запрос от недействительных референтов к серверу.
- Скопируйте следующий фрагмент кода.
- Откройте файл nginx по умолчанию, как показано на этапе «Подготовка».
- Вставьте скопированный фрагмент кода под первый блок местоположения, найденный в файле по умолчанию. В nginx нечувствительность к регистру в регулярном выражении (~ *) всегда имеет приоритет перед косой чертой (/), поэтому следующий фрагмент кода выполняется перед блоком местоположения прямой косой черты.
- Сохраните и закройте файл по умолчанию, а затем выполните 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
Действительные рефереры - самый удобный и широко признанный метод простой блокировки недействительных рефереров. Он содержит всего две строки по сравнению с предыдущим методом и очень гибкий. Однако его немного сложно переварить, поскольку в нем используются регулярные выражения и другой механизм для блокировки запросов от недействительных референтов.
- Скопируйте следующий фрагмент кода между и в самое начало основного блока местоположения.
- Замените список доменных имен разрешенными доменными именами, например google, bing или вашими собственными доменами и т. Д.
- Сохраните и закройте файл по умолчанию, а затем выполните 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.