Назад | Перейти на главную страницу

Удалять строки запроса только для запросов, требующих PHP (игнорируя статические файлы и определенные URL-адреса)

Один из моих сайтов продолжает получать спам с поддельными URL-запросами, содержащими строки запроса.

У меня есть кеширование, но, к сожалению, строки запроса игнорируются. Теперь каждый раз, когда я получаю поток запросов строки запроса, мой сервер оказывается пригвожденным из-за притока обращений к базе данных и обработки PHP (я использую wordpress), и мой сервер перестает отвечать.

Как я могу игнорировать / переписывать запросы, содержащие строки запроса для любого URL-адреса, который будет передан на мой сервер, но разрешить их для статических файлов и определенных URL-адресов (/ search /, / wp-admin /, wp-login.php и т. Д.)?

Моя настройка nginx

location ~ \.php$ {

        fastcgi_index index.php;

        try_files $uri = 404;
        include fastcgi_params;
        fastcgi_split_path_info ^(.+.php)(.*)$;
        fastcgi_pass unix:/dev/shm/php-fpm-www.sock;
        fastcgi_intercept_errors on;
        fastcgi_ignore_client_abort off;
    }


# Use cached or actual file if they exists, otherwise pass request to WordPress
location / {
        try_files /wp-content/cache/supercache/$http_host/$cache_uri/index.html $uri $uri/ /index.php?$args ;
}

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

Как все с этим справляются?

Кажется, это сработало ...

http {

    limit_conn_zone $binary_remote_addr zone=default_con:20m;
    limit_req_zone $binary_remote_addr zone=php:1m rate=2r/s;

location ~ \.php {

## LIMIT REQUESTS TO STOP SERVER GETTING NAILED ##
        limit_req zone=php burst=7 nodelay;
        limit_conn default_con 2;

        fastcgi_index index.php;
        try_files $uri = 404;
        include fastcgi_params;
        fastcgi_split_path_info ^(.+.php)(.*)$;
        fastcgi_pass unix:/dev/shm/php-fpm-www.sock;
        fastcgi_intercept_errors on;
        fastcgi_ignore_client_abort off;

    }

}