Nginx
僅在 NGINX 上允許來自單個 IP 地址的 POST 請求
是否可以只允許一個 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; }