Nginx

僅在 NGINX 上允許來自單個 IP 地址的 POST 請求

  • March 24, 2017

是否可以只允許一個 IP 地址發出 POST 請求並在 NGINX 上以相同的理由拒絕其他人?

看到了與此相關的答案,但那裡提供的解決方案需要在伺服器範圍內應用規則。我需要在虛擬主機級別執行此操作,而不影響託管在同一伺服器上的其他站點。

在您的虛擬主機目錄下,創建一個 .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;
}

引用自:https://serverfault.com/questions/840342