๊ธฐ์กด์๋ request.getRemoteAddr(); ๋ฅผ ํตํด Client์ IP๋ฅผ ๊ฐ์ ธ์๋๋ฐ ์น์๋ฒ๋ WAS ์์ L4์ ๊ฐ์ Load balancers๋ Proxy server, caching server๋ฑ์ด ์๋ ๊ฒฝ์ฐ๋ ์ํ๋ ๊ฒฐ๊ณผ๋ฅผ ์ป์ง ๋ชปํ๋ ๊ฒ์ ๋ฐ๊ฒฌํ์๋ค.
์ด๋ฐ ์ ํ์ ์น์๋ฒ ํน์ WAS์ HTTP๋ AJP ์์ฒญ์ ๋ณด๋ธ ํ ๋ฐ์ ๊ฒฐ๊ณผ๋ฅผ ๊ฐ๊ณตํ์ฌ ํด๋ผ์ด์ธํธ์ ์ฌ์ ์กํ๊ธฐ ๋๋ฌธ์ ์์ ๊ฐ์ ํ์์ด ๋ฐ์ํ ๊ฒ์ด๋ค. ( ํด๋ผ์ด์ธํธ IP -> ๋ก๋๋ฐธ๋ฐ์, ํ๋ก์ ์ฅ๋น -> ์น์๋ฒ )
๊ทธ๋์ ๋ฑ์ฅํ ๊ฒ์ด XFF(X-Forwarded-For)์ด๋ค!
XFF ์๋ Client์ Proxy IP ๊ฐ ์ฝค๋ง๋ฅผ ๊ตฌ๋ถ์๋ก ๋ค์ด๊ฐ๊ฒ ๋์ด์๋๋ฐ ์์๋ ์๋์ ๊ฐ๊ธฐ ๋๋ฌธ์ ์ฒซ๋ฒ์งธ IP๋ฅผ ๊ฐ์ ธ์ค๋ฉด Client์ IP๋ฅผ ํ๋ํ ์ ์๋ค.
X-Forwarded-For: client, proxy1, proxy2
XFF๋ ํ์ค์ด์ง๋ง ์ ์ RFC์ ํฌํจ๋๊ฒ ์๋๋ผ ๋ชจ๋ ์ ํ์ด XFF ํค๋๋ฅผ ์ฌ์ฉํ๋ ๊ฒ์ด ์๋๋ค.
์๋ฅผ ๋ค์ด WebLogic Connector(mod_wl) ๋ XFF ํค๋๋ฅผ ์ฌ์ฉํ์ง ์๊ณ WL-Proxy-Client-IP ๋ Proxy-Client-IP ํค๋๋ฅผ ์ฌ์ฉํ๋ค.
๋ฐ๋ผ์ ์ ํ์ ์ข ๋ฅ์ ์ํฅ์ ๋ฐ์ง ์๊ณ Client IP๋ฅผ ๊ฐ์ ธ์ค๊ณ ์ ํ๋ค๋ฉด ์๋์ ๊ฐ์ด ์์ฑํด์ผ ํ๋ค.
public String getClientIp(HttpServletRequest request) {
String ip = null;
ip = request.getHeader("X-Forwarded-For");
if (ip == null || ip.length() == 0 || "unknown".equalsIgnoreCase(ip)) {
ip = request.getHeader("Proxy-Client-IP");
}
if (ip == null || ip.length() == 0 || "unknown".equalsIgnoreCase(ip)) {
ip = request.getHeader("WL-Proxy-Client-IP");
}
if (ip == null || ip.length() == 0 || "unknown".equalsIgnoreCase(ip)) {
ip = request.getHeader("HTTP_CLIENT_IP");
}
if (ip == null || ip.length() == 0 || "unknown".equalsIgnoreCase(ip)) {
ip = request.getHeader("HTTP_X_FORWARDED_FOR");
}
if (ip == null || ip.length() == 0 || "unknown".equalsIgnoreCase(ip)) {
ip = request.getRemoteAddr();
}
log.debug("Client IP : " + ip);
return ip;
}
'๊ฐ๋ฐ > Web' ์นดํ ๊ณ ๋ฆฌ์ ๋ค๋ฅธ ๊ธ
[Maven] ๋ฉ์ด๋ธ repository์ ์๋ ๋ผ์ด๋ธ๋ฌ๋ฆฌ ์ถ๊ฐํ๊ธฐ (0) | 2022.02.03 |
---|---|
[Spring] Spring Boot Admin ์ฌ์ฉํ๊ธฐ - Log, Login ์ ์ฉ (0) | 2022.01.25 |
[Spring] @Transactional์ด ์ ์ฉ๋์ง ์์ ๊ฒฝ์ฐ(๋กค๋ฐฑ์ด ์๋๋ ์ด์ ) (0) | 2022.01.13 |
[Web] redirect์ ๋ฐ์ดํฐ ์ ๋ฌํ๋ ๋ฐฉ๋ฒ - RedirectAttributes (0) | 2022.01.07 |
[Web] PRG ํจํด (Post - Redirect - Get) (2) | 2022.01.07 |
๋๊ธ