🌐 Как разрешить в Nginx только методы GET и POST |

🌐 Как разрешить в Nginx только методы GET и POST

Мануал

В мире управления веб-серверами существует множество проблем, связанных с безопасностью.

Среди них – необходимость ограничения доступа к определенным методам HTTP на сервере для предотвращения возможных несанкционированных действий.

В этой статье мы рассмотрим тонкости настройки веб-сервера Nginx на разрешение доступа только к методам GET и POST, которые являются наиболее распространенными методами HTTP для веб-приложений.

Прежде чем начать, необходимо понять, что такое методы GET и POST.

Метод GET получает данные с указанного ресурса, а метод POST отправляет данные для обработки на указанный ресурс.

🌐 Nginx или Apache: Сравнение двух ведущих веб-серверов

Ранее мы рассмотрели этот же кейс с Apache.

Теперь перейдем к пошаговому руководству.

Шаг 1: Установка Nginx

Если на вашем сервере еще не установлен Nginx, то первым шагом будет его установка.

Для сервера на базе Ubuntu достаточно выполнить следующие команды:

sudo apt update  $ sudo apt install nginx

После установки убедитесь, что Nginx запущен, набрав:

systemctl status nginx

Шаг 2: Создание или редактирование серверного блока

Для ограничения методов HTTP необходимо отредактировать конфигурацию того серверного блока, который требуется изменить.

Обычно он находится в файле /etc/nginx/sites-available/.

Для данного примера предположим, что у вас есть файл серверного блока с именем yourdomain.com.

Откройте его с помощью текстового редактора:

sudo nano /etc/nginx/sites-available/yourdomain.com

Шаг 3: Разрешение только методов GET и POST

Открыв конфигурационный файл, необходимо добавить или изменить блок location в блоке server.

В блоке location добавьте директиву if для проверки запросов, не использующих метод GET или POST, и возврата статуса ‘405 Not Allowed’.

Вот пример того, как это можно сделать:

server {
    listen 80;
    server_name yourdomain.com;
    
    location / {
        if ($request_method !~ ^(GET|POST)$ ) {
            return 405;
        }
        
        try_files $uri $uri/ =404;
    }
}
Данная конфигурация возвращает ошибку 405 для любого метода, не являющегося GET или POST.
Символ ~ является оператором совпадения регулярных выражений, а символ ^ указывает на начало строки.
Таким образом, !~ ^(GET|POST)$ соответствует любому методу запроса, который не находится в начале строки и не является ни GET, ни POST.

Шаг 4: Проверка конфигурации

После редактирования конфигурационного файла необходимо протестировать конфигурацию, чтобы убедиться в отсутствии синтаксических ошибок:
sudo nginx -t

Если конфигурация верна, то вы увидите вывод, подобный этому:

nginx: configuration file /etc/nginx/nginx.conf test is successful

Шаг 5: Перезагрузка Nginx

Убедившись в правильности конфигурации, можно применить изменения, перезагрузив Nginx:

sudo systemctl reload nginx

Теперь ваш сервер Nginx должен разрешать только методы GET и POST.

Заключение

В этом руководстве было показано, как ограничить HTTP-методы в Nginx, разрешив только GET и POST.

Это простой и эффективный способ повысить безопасность вашего сервера, предотвратив выполнение нежелательных действий.

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

см. также:

Пожалуйста, не спамьте и никого не оскорбляйте. Это поле для комментариев, а не спамбокс. Рекламные ссылки не индексируются!
Добавить комментарий

  1. Анна

    Почему так, а не испольуя встроенный модуль?
    limit_except GET POST { deny all; } # ограничить методы HTTP кроме указанных

    Ответить