일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
1 | 2 | 3 | 4 | 5 | 6 | |
7 | 8 | 9 | 10 | 11 | 12 | 13 |
14 | 15 | 16 | 17 | 18 | 19 | 20 |
21 | 22 | 23 | 24 | 25 | 26 | 27 |
28 | 29 | 30 |
- interface
- mysql
- 함수
- centos
- git
- Spring
- framework
- data
- Server
- mariaDB
- ai
- javascript
- Linux
- 인공지능
- Web
- Numpy
- 자바
- SSH
- java
- DeepLearning
- Pattern
- Python
- db
- error
- Security
- Github
- Deep
- Analysis
- learning
- LIST
- Today
- Total
PostIT
[Java/Spring/Nginx] 서버에서 Client IP 정확히 가져오기 본문
많은 사이트들을 돌아다니고 참고해도, 이거 한줄이면 Proxy를 넘어 아이피를 가져올 수 있다고 한다.
public String getUserIP(HttpServletRequest request) {
String ip = request.getHeader("X-FORWARDED-FOR");
logger.info("TEST : X-FORWARDED-FOR : "+ip);
if (ip == null) {
ip = request.getHeader("Proxy-Client-IP");
logger.info("TEST : Proxy-Client-IP : "+ip);
}
if (ip == null) {
ip = request.getHeader("WL-Proxy-Client-IP");
logger.info("TEST : WL-Proxy-Client-IP : "+ip);
}
if (ip == null) {
ip = request.getHeader("HTTP_CLIENT_IP");
logger.info("TEST : HTTP_CLIENT_IP : "+ip);
}
if (ip == null) {
ip = request.getHeader("HTTP_X_FORWARDED_FOR");
logger.info("TEST : HTTP_X_FORWARDED_FOR : "+ip);
}
if (ip == null) {
ip = request.getRemoteAddr();
}
return ip;
}
이 하나면 다 된다는 문제의 코드.
아무리 찍어봐도 로컬호스트 외에는 다 Null값이 뜨는데 도데체 뭘 가져온다고 말하는 것인지 납득을 할 수 없었다.
그래서 찾고 찾아보니 결국 서버설정과 연관된것이었다.
- vi /etc/nginx/nginx.conf
http {
set_real_ip_from 127.0.0.1;
real_ip_header X-Forwarded-For;
- vi /etc/nginx/conf.d/default.conf
location / {
proxy_set_header X-Forwarded-For $remote_addr;
proxy_set_header X-Forwarded-Proto $scheme;
proxy_set_header Host $http_host;
proxy_pass http://tomcat_servers/}
nginx.conf에서 header 부분의 설정을 통해 nginx에서 proxy되는 부분을 설정해주어야 Spring, 즉 Java에서 원하는 IP값을 가져올 수 있다.
더욱 더 나아가, 서버의 설정만 알고있다면 위의 자바코드를 길게 비교할 필요도 없지 않은가 싶다.
서버 따로 개발 따로 심도있게 해야하지만, 대부분의 회사는 서버의 정보를 개발자가 알기는 쉽지 않다고 한다. (아직 겪어보진 않았지만)
그러므로 저렇게 길게 나왔던게 아닌가 싶다.
Anyway, IP는 여기서 마치고자 한다.
'Webserver > NginX' 카테고리의 다른 글
[HTTPS] letsencrypt 인증서 갱신하기 - nginx (0) | 2017.06.18 |
---|---|
[Server/NginX] NginX에서 Https로 전환하는 Configuration - 퍼옴 (0) | 2016.12.15 |
[Server/NginX] NginX 주요 설정 정보 - 퍼옴 (0) | 2016.12.15 |