Nginx limitam solicitações POST a certas páginas

2

É possível no arquivo nginx.conf limitar as solicitações POST recebidas para apenas algumas páginas?

Digamos que eu só queira permitir solicitações de postagens em signup.php e login.php, mas não em todas as outras páginas possíveis.

O motivo pelo qual eu pergunto é que meu servidor frequentemente é inundado com solicitações POST em páginas aleatórias, o que causa uma carga desnecessária.

Eu tentei bloqueá-lo no PHP, mas neste caso o nginx ainda tem que processar e aceitar os dados completos do POST. Isso eu estou tentando evitar.

    
por Mr.Boon 22.02.2012 / 11:05

1 resposta

2

Você precisará criar vários locais para lidar com as diferentes situações:

# including your fastcgi params at a higher level
# allows them to be inherited in both locations
include fastcgi_params;
fastcgi_param SCRIPT_FILENAME $request_filename;

# regex locations are matched in order, so this will handle
# /anything/signup.php and /anything/login.php
# If you want to just have /signup.php and /login.php,
# add ^ before the / or you could split this into two more:
# location = /signup.php abd location = /login.php
location ~ /(signup|login)\.php$ {
  fastcgi_pass php;
}

# this will handle the rest of the php requests
location ~ \.php$ {
  # Only allow GET and HEAD requests for all other php scripts
  limit_except GET HEAD {
     allow 1.1.1.1/32; #trusted ip
     deny all;
  }
  fastcgi_pass php;
}
    
por 22.02.2012 / 14:15

Tags