Remover strings de consulta somente em requisições que requerem PHP (ignorando arquivos estáticos e certos urls)

1

Um dos meus sites continua recebendo spam com solicitações de URL falsas contendo strings de consulta.

Eu tenho o cache em vigor, mas infelizmente as strings de consulta são ignoradas. Agora, toda vez que recebo uma enxurrada de solicitações de strings de consulta, meu servidor fica preso devido a um influxo de acessos ao banco de dados e ao processamento do PHP (estou usando o wordpress) e meu servidor se torna sem resposta.

Como posso ignorar / reescrever os pedidos que contêm strings de consulta para qualquer URL que será passada para o meu back-end, mas permitir arquivos estáticos e certos URLs (/ search /, / wp-admin /, wp-login.php etc)?

Minha configuração 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 ;
}

Existe uma maneira fácil (ish) de realizar isso com reescritas? Estou chocado por não poder encontrar quase nenhuma outra informação sobre isso na internet (talvez eu não esteja procurando a solução correta), eu certamente não posso ser o único que está enfrentando essa questão.

Como todos lidam com isso?

    
por Paul Thomson 05.08.2015 / 19:49

1 resposta

0

Isso parece ter feito o truque ...

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;

    }

}
    
por 15.08.2015 / 04:55

Tags