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.