Для этого лучшим решением, как вы сказали, являются IPtables на 3 разных компьютерах.
На самом деле, это не очень хорошее решение, так как удаленный ip ( $remote_addr
в Nginx) будет от loadbalancer Amazon. Запрет, который приведет к тому, что весь перенаправленный трафик будет заблокирован.
Вам нужно будет проверить пакеты и найти X-Forwarded-For
заголовок HTTP , IPtables не поддерживает протоколы.
Я остановился на следующем решении 2 непослушных IP-адресов в Nginx
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;
Это не красиво, но надеюсь, что это помогает