Если ваш сервер работает медленно, возможно APACHE запросы OPTIONS грузят сервер. Это может быть вызвано злоупотреблением со стороны. Например DDoS-атакой. Или неправильной конфигурацией CORS. Прочитайте про несколько способов решить проблему

Ограничить обработку OPTIONS-запросов

Включите модуль mod_rewrite и добавьте правило в .htaccess или конфигурацию виртуального хоста:

RewriteEngine On
RewriteCond %{REQUEST_METHOD} OPTIONS
RewriteRule ^(.*)$ - [R=200,L]

или на пустой файл например readme.html

RewriteEngine on
RewriteCond %{HTTP_USER_AGENT} ^.*OPTIONS*$ [NC]
RewriteRule ^/$ /readme.html [L]

Это сразу завершает обработку OPTIONS-запросов с кодом 200 OK, не нагружая ваш сервер VPS.

Отключить ненужные модули

Убедитесь, что у вас не включены лишние модули. Например mod_headers или mod_cors, если они не используются, поэтому APACHE запросы OPTIONS грузят сервер

sudo a2dismod ненужный_модуль
sudo systemctl restart apache2

Настроить CORS правильно

Если OPTIONS-запросы приходят из-за CORS, ограничьте разрешённые apache домены:

Header always set Access-Control-Allow-Origin "https://ваш-домен"
Header always set Access-Control-Allow-Methods "GET, POST, PUT, DELETE"
Header always set Access-Control-Allow-Headers "Content-Type, Authorization"
Header always set Access-Control-Max-Age "3600"

Параметр Access-Control-Max-Age кэширует CORS-запросы на 1 час, уменьшая количество OPTIONS.

Можно добавить в конфигурацию NGINX правила отдачи заголовков

#
# Wide-open CORS config for nginx
#
location / {
     if ($request_method = 'OPTIONS') {
        add_header 'Access-Control-Allow-Origin' '*';
        #
        # Om nom nom cookies
        #
        add_header 'Access-Control-Allow-Credentials' 'true';
        add_header 'Access-Control-Allow-Methods' 'GET, POST, OPTIONS';
        #
        # Custom headers and headers various browsers *should* be OK with but aren't
        #
        add_header 'Access-Control-Allow-Headers' 'DNT,X-CustomHeader,Keep-Alive,User-Agent,X-Requested-With,If-Modified-Since,Cache-Control,Content-Type';
        #
        # Tell client that this pre-flight info is valid for 20 days
        #
        add_header 'Access-Control-Max-Age' 1728000;
        add_header 'Content-Type' 'text/plain charset=UTF-8';
        add_header 'Content-Length' 0;
        return 204;
     }
     if ($request_method = 'POST') {
        add_header 'Access-Control-Allow-Origin' '*';
        add_header 'Access-Control-Allow-Credentials' 'true';
        add_header 'Access-Control-Allow-Methods' 'GET, POST, OPTIONS';
        add_header 'Access-Control-Allow-Headers' 'DNT,X-CustomHeader,Keep-Alive,User-Agent,X-Requested-With,If-Modified-Since,Cache-Control,Content-Type';
     }
     if ($request_method = 'GET') {
        add_header 'Access-Control-Allow-Origin' '*';
        add_header 'Access-Control-Allow-Credentials' 'true';
        add_header 'Access-Control-Allow-Methods' 'GET, POST, OPTIONS';
        add_header 'Access-Control-Allow-Headers' 'DNT,X-CustomHeader,Keep-Alive,User-Agent,X-Requested-With,If-Modified-Since,Cache-Control,Content-Type';
     }
}

не уверен что это поможет, но пишут что так правильно.

Использовать mod_security для блокировки злодеев

Установите mod_security и настройте правила для ограничения частоты OPTIONS-запросов apache

SecRule REQUEST_METHOD "OPTIONS" "id:1000,phase:1,deny,status:403,msg:'OPTIONS flood'"

Настроить Rate Limiting

Используйте mod_ratelimit или mod_qos для ограничения запросов apache

<IfModule mod_ratelimit.c>
    <Location "/">
        SetOutputFilter RATE_LIMIT
        SetEnv rate-limit 10
    </Location>
</IfModule>

Проверить логи и заблокировать злоумышленников

Найдите IP-адреса, которые отправляют APACHE запросы OPTIONS которые грузят сервер

sudo tail -f /var/log/apache2/access.log | grep "OPTIONS"

Добавьте их в черный список через .htaccess или фаервол apache iptables/ufw

Order Allow,Deny
Deny from 123.45.*.*
Allow from all

Используйте правило для fail2ban

# неудачные попытки ввода пароля
[apache]
enabled = true
port = http,https
filter = apache-auth
logpath = /var/log/apache*/*error.log
maxretry = 6
# сканирование для применения эксплойтов и php уязвимостей
[apache-noscript]
enabled = true
port = http,https
filter = apache-noscript
logpath = /var/log/apache*/*error.log
maxretry = 6
# попытки переполнения apache2
[apache-overflows]
enabled = true
port = http,https
filter = apache-overflows
logpath = /var/log/apache*/*error.log
maxretry = 3
# неудачные попытки в поиске домашней директории на сервере
[apache-nohome]
enabled = true
port = http,https
filter = apache-nohome
logpath = /var/log/apache*/*error.log
maxretry = 3

 

Ctrl + C. Данное сочетание клавиш необходимо знать любому пользователю терминала. С его помощью можно завершить процесс, выполняющийся на данный момент в терминале.

Обновите Apache и ОС

Убедитесь, что у вас последняя версия Apache

sudo apt update && sudo apt upgrade apache2

После изменений не забудьте перезагрузить Apache

sudo systemctl restart apache2

Если проблема остаётся, проверьте нагрузку с помощью top, htop или apachetop, чтобы убедиться, что проблема именно в OPTIONS-запросах. Возможно, нагрузка связана с другими факторами.

Для чего используют apache2

Apache2 — это один из самых популярных веб-серверов в мире, используемый для размещения и обслуживания сайтов. Он играет ключевую роль в работе современных веб-приложений, обеспечивая обработку HTTP-запросов. В том числе APACHE запросы OPTIONS. Производит балансировку нагрузки и безопасность данных. Благодаря своей гибкости и открытому исходному коду Apache2 применяется как в небольших проектах, так и в крупных корпоративных системах.

Одной из главных функций Apache2 является обработка статического и динамического контента. Он поддерживает работу с HTML, CSS, JavaScript, а также интегрируется с серверными языками, такими как PHP, Python и Perl, через модули. Это делает его универсальным решением для различных типов веб-приложений.

5 1 голос
Article Rating
Подписаться
Уведомить о
guest

0 Комментарий
Старые
Новые Популярные
Межтекстовые Отзывы
Посмотреть все комментарии
Oxistudio
Обзор конфиденциальности

На этом сайте используются файлы cookie, что позволяет нам обеспечить наилучшее качество обслуживания пользователей. Информация о файлах cookie хранится в вашем браузере и выполняет такие функции, как распознавание вас при возвращении на наш сайт и помощь нашей команде в понимании того, какие разделы сайта вы считаете наиболее интересными и полезными.