Gymterview
junior

Как получить IP адрес клиента на сервере

IP-адрес клиента можно получить через метод getRemoteAddr() объекта HttpServletRequest:

Пример
String clientIP = request.getRemoteAddr();

Однако если запрос проходит через прокси-сервер, балансировщик нагрузки или CDN (что типично для production), getRemoteAddr() вернёт IP прокси, а не клиента. В таких случаях реальный IP клиента содержится в заголовке X-Forwarded-For:

Пример
String clientIP = request.getHeader("X-Forwarded-For");
if (clientIP == null) {
    clientIP = request.getRemoteAddr();
}

Заголовок X-Forwarded-For может содержать цепочку IP-адресов (client, proxy1, proxy2), где первый — реальный IP клиента. В Spring Boot для корректной обработки этих заголовков настраивается server.forward-headers-strategy=NATIVE.

На собеседовании: обязательно упомяните X-Forwarded-For. Ответ только про getRemoteAddr() показывает, что вы не работали с production-средами, где всегда есть reverse proxy.