티스토리 뷰
nginx 와 tomcat 을 이용하여 웹 서비스 구축 시 nginx 로 들어온 요청을 reverse proxy형태로 tomcat에 요청 할 경우
client remote ip의 ip가 넘어오는게 아니라 nginx의 remote ip 가 넘어오는 현상이 있다.
HTTP HTTP ( reverse proxy )
Client ---------> Nginx -------------> Tomcat
(192.168.0.200) (192.168.0.100) (192.168.0.150)
위의 구조일 경우 Tomcat에서 request.getHeader("remote_addr") 로 불러오거나 access log에 Client의 IP ( 192.168.0.200 ) 을 가져오는 것이 아닌 NginX ( 192.168.0.100 ) 이 오기때문에 모든 요청이 Nginx의 IP를 찍게 되는 현상이 있다. 이 현상은 간단 히 해결할 수 있다.
nginx의 nginx.conf
proxy_pass http://localhost:15000;
proxy_set_header X-Real-IP $remote_addr;
proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
proxy_set_header Host $http_host;
}
위와 같이 X-Forwarded-For 를 헤더에 셋팅한 다음
tomcat의 server.xml
prefix="localhost_access_log." suffix=".txt"
pattern="%{X-Forwarded-For}i %h %l %u %t "%r" %s %b" resolveHosts="false"/>
jsp source에서도 request.getHeader("X-Forwarded-For"); 로 호출하면 문제는 해결된다.
by rocksea.
'Developer' 카테고리의 다른 글
[ cmake ] Installation guide (0) | 2012.08.07 |
---|---|
[ nginx + tomcat ] reverse proxy 연동하기 ( windows ver. ) (0) | 2012.07.27 |
[python#1] python web framework "쟁고" (0) | 2012.07.25 |
[ UDP ] packet buffer size 조절 (0) | 2012.07.20 |
[ multicast ping ] windows ping 안나가는 현상 (0) | 2012.07.19 |
- Total
- Today
- Yesterday
- redis
- 스페인 여행
- ubuntu
- maven
- 가정법
- mongoDB
- 도덕경
- hdfs
- 다낭
- 해외여행
- 베트남
- memcached
- AWS
- Business English
- NGINX
- Python Django
- it
- 비교구문
- 여행
- k8s
- 대명사 구문
- 비지니스 영어
- 영작
- PostgreSQL
- 조동사
- 영문법
- hadoop
- nodejs
- Python
- JBOSS
일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
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 |