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

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

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

Как я могу игнорировать/переписывать запросы, содержащие строки запроса для какого-либо URL, который будет передан до моего бэкенда, но позволит им для статических файлов и определенных URL (/поиск/,/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 ;
}

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

Как все имеют дело с ним?

1
задан 5 August 2015 в 20:49
1 ответ

Кажется, это сделало трюк...

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;

    }

}
0
ответ дан 4 December 2019 в 07:18

Теги

Похожие вопросы