是否可以只允许一个 IP 地址发出 POST 请求,并以相同的理由拒绝 NGINX 上的其他所有人?
看过答案与此相关,但那里提供的解决方案需要在整个服务器范围内应用规则。我需要在虚拟主机级别执行此操作,而不会影响同一服务器上托管的其他网站。
答案1
在您的虚拟主机目录下,创建一个.htaccess 文件。
您可以使用如下规则拒绝所有发布请求:
# deny all POST requests
<IfModule mod_rewrite.c>
RewriteCond %{REQUEST_METHOD} POST
RewriteRule .* - [F,L]
</IfModule>
然后允许白名单:
# 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>
更多信息本网站
编辑:对于 NGINX,你可以使用以下方法翻译先例规则这个在线工具, 例如:
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;
}