そのため、あなたが言ったように、3つの異なるマシンのIPtablesが最善のソリューションです。
実際には、リモートIP($remote_addr
Nginx内)はAmazonのロードバランサーからのものになるため、これは良い解決策ではありません。これを禁止すると、転送されるすべてのトラフィックが禁止されます。
パケットを検査してHTTP X-Forwarded-For
ヘッダーを見つける必要があります。IPtablesはそのようにプロトコルを認識しません。
私はNginxの2つのいたずらなIPに対する次の解決策で解決しました
set $client_ip $remote_addr;
if ($http_x_forwarded_for) {
set $client_ip $http_x_forwarded_for;
}
if ($client_ip = "123.123.123.123") {
return 403;
}
if ($client_ip = "123.123.123.234") {
return 403;
}
変数の紹介。$client_ip
これは、http_x_forwarded_for
利用できない場所でこれをローカルにテストするためでもあります。
少しオフトピックですが、便宜上投稿していますが、そのクライアントIPをアクセスログに追加しました。
log_format main "\$client_ip - \$remote_user [\$time_local] \"\$request\" \$status \$body_bytes_sent \"\$http_referer\" \"\$http_user_agent\"";
access_log /var/log/nginx.access.log main;
きれいではありませんが、お役に立てば幸いです