Em seu diretório de host virtual, crie um arquivo .htaccess.
Você pode usar regras como essa para negar todas as solicitações de postagem:
# deny all POST requests
<IfModule mod_rewrite.c>
RewriteCond %{REQUEST_METHOD} POST
RewriteRule .* - [F,L]
</IfModule>
Em seguida, permita a lista de permissões:
# whitelist POST requests
<IfModule mod_rewrite.c>
RewriteCond %{REQUEST_METHOD} POST
RewriteCond %{REQUEST_URI} !/contact.php [NC]
RewriteCond %{REMOTE_ADDR} !127.0.0.1
RewriteRule .* - [F,L]
</IfModule>
Mais informações sobre este site
EDIT: para NGINX você pode transformar a regra precedente com esta ferramenta online , por exemplo :
if ($request_method ~ "POST"){
set $rule_0 1$rule_0;
}
if ($rule_0 = "1"){
return 403;
break;
}
if ($request_method ~ "POST"){
set $rule_0 1$rule_0;
}
if ($remote_addr !~ "127.0.0.1"){
set $rule_0 3$rule_0;
}
if ($rule_0 = "321"){
return 403;
break;
}