공유할 서비스 선택

TECH


TECH

Middleware (Nginx-5) Nginx 사용하는 옵션정리 5_X-Forwarded-For

페이지 정보

작성자 미들웨어 아이디로 검색 전체게시물 댓글 0건 조회 10,640회 좋아요 2회 작성일 20-06-21 09:48

본문

이번에는 Nginx 에서 많이 사용되고 있는 기능중 한개를 설명해드리겠습니다. 


진행 순서는 1~8까지 가이드를 준비하고 있습니다.

  1. Nginx 설치 및 컴파일 방법_(모듈설치)
  2. Nginx 사용하는 옵션정리_proxy_pass
  3. Nginx 사용하는 옵션정리_upstream
  4. Nginx 사용하는 옵션정리_health-check
  5. Nginx 사용하는 옵션정리_sticky
  6. Nginx 사용하는 옵션정리_upstream, ip hash
  7. Nginx 사용하는 옵션정리_X-Forwarded-For
  8. Nginx 사용하는 옵션정리_php-fpm & zabbix 모니터링

apache를 많이 사용하다 요즘엔 Nginx 위주로 사용하고 있습니다.

 

nginx 와 wildfly 연동을 할때 nginx proxy_pass 을 사용하게 되면 기본적으로 client IP를 얻어오지 못하고 webserver ip나 L4 ip를 access log로 받아옵니다.

client ip을 얻어오고 싶을때는 wildfly (jboss)에서 아래 설정을 추가해주셔야 합니다.

 

 

1. x-forwarded-for 란?

 XFF 는 HTTP Header 중 하나로 HTTP Server 에 요청한 clinet 의 IP 를 식별하기 위한 사실상의 표준이다.


웹 서버나 WAS 앞에 L4 같은 Load balancers 나 Proxy server(HAProxy), caching server(Varnish), HTTP 서버용 WAS Connector(웹로직 커넥터 - mod_wl, 톰캣 커넥터 - mod_jk 등) 등이 있을 경우
이런 제품들은 웹서버/WAS 에 HTTP 나 전용 프로토콜(AJP)로 요청을 보낸후에 받은 결과를 가공하여 클라이언트에 재전송하게 된다.

이로 인해 처리한 웹 서버나 WAS에서 request.getRemoteAddr(); 등으로 클라이언트 IP를 얻을 경우 L4 나 Proxy 의 IP 를 얻게 되는데 이는 원하는 결과가 아니다.
X-Forwarded-For는 이 문제를 해결하기 위해 사용하는 http header 로 squid caching server 에서 처음 사용되었다.
다음과 같이 콤마를 구분자로 client 와 proxy IP 가 들어가게 되므로 첫번째 IP 를 가져오면 클라이언트를 식별할 수 있다.


X-Forwarded-For: client, proxy1, proxy2

(링크.. 여기서 참고했습니다.) https://www.lesstif.com/pages/viewpage.action?pageId=20775886


2. 
 x-forwarded-for 테스트

파일 : standalone.conf

         <subsystem xmlns="urn:jboss:domain:web:2.2" default-virtual-server="default-host" native="false">

            <connector name="http" protocol="HTTP/1.1" scheme="http" socket-binding="http"/>

            <connector name="ajp" protocol="AJP/1.3" scheme="http" socket-binding="ajp"/>

            <virtual-server name="default-host" enable-welcome-root="false">

                <alias name="localhost"/>

                <alias name="example.com"/>

            </virtual-server>

 

                <valve name="RemoteIPValve" module="org.jboss.as.web" class-name="org.apache.catalina.valves.RemoteIpValve">

                        <param param-name="remoteIpHeader" param-value="x-forwarded-for"/>

                        <param param-name="protocolHeader" param-value="x-forwarded-proto"/>

                        <param param-name="protocolHeaderHttpsValue" param-value="https"/>

                        <param param-name="internalProxies" param-value="192.*|172.*"/>

                </valve>

 

        </subsystem>

 

위에 붉은 색 부분을 추가해주면 됩니다.

추가로 위 옵션 중  192.* 172.* IP 대역에 대해서 client IP가 안나오는 경우 아래 옵션을 추가해주면 됩니다.

<param param-name="internalProxies" param-value="192.*|172.*"/>  

 

 

댓글목록

등록된 댓글이 없습니다.

TECH 목록
번호 제목 작성자 작성일 조회수
44 Middleware 미들웨어 아이디로 검색 전체게시물 10-05 2101
(Kubernetes-4) docker 설치 & 삭제하기

카테고리 : Middleware

2,101 0
작성자 : 미들웨어 21/10/05
43 Middleware 미들웨어 아이디로 검색 전체게시물 09-23 2640
(Kubernetes-3) prometheus & Grafana 활용하여 모니터링 구성하기

카테고리 : Middleware

2,640 0
작성자 : 미들웨어 21/09/23
42 Middleware 미들웨어 아이디로 검색 전체게시물 09-06 3353
(Kubernetes-2) 오라클 클라우드로(무료 VM) 쿠버네티스 (OKE) 생성 및 Nginx 기동

카테고리 : Middleware

3,353 0
작성자 : 미들웨어 21/09/06
41 Middleware 미들웨어 아이디로 검색 전체게시물 08-26 2883
(Kubernetes-1) Kubernetes 아키텍처 흐름도 와 개념 정리

카테고리 : Middleware

2,883 0
작성자 : 미들웨어 21/08/26
40 Middleware 미들웨어 아이디로 검색 전체게시물 08-11 3661
(weblogic 활용) 리눅스에 VNC 설치 하여 UI모드로 Weblogic 콘솔모드 접속

카테고리 : Middleware

3,661 0
작성자 : 미들웨어 21/08/11
39 Middleware 미들웨어 아이디로 검색 전체게시물 07-27 6478
(오픈소스 활용-5) SpringBoot 의 장단점 및 소개

카테고리 : Middleware

6,478 0
작성자 : 미들웨어 21/07/27
38 Middleware 미들웨어 아이디로 검색 전체게시물 07-13 2986
(weblogic 활용) weblogic 14 사일런트 모드(-slient)로 설치 해보자

카테고리 : Middleware

2,986 0
작성자 : 미들웨어 21/07/13
37 Middleware 미들웨어 아이디로 검색 전체게시물 06-23 2717
(오픈소스 활용-4) Git가입 -> repogitory 생성 -> Git & Jenkins연동 -> Jenkins & Tomcat build 배포 -> Jenkins pipline 구성 전체 흐름

카테고리 : Middleware

2,717 0
작성자 : 미들웨어 21/06/23
36 Middleware 미들웨어 아이디로 검색 전체게시물 06-07 3602
(오픈소스 활용-3) scouter 모니터링 알람 설정 및 튜닝된 jar로 그룹별 slack 알람 보내는 방법

카테고리 : Middleware

3,602 0
작성자 : 미들웨어 21/06/07
35 Middleware 미들웨어 아이디로 검색 전체게시물 05-22 6420
(오픈소스 활용-2) scouter-paper 을 활용하여 모바일, 태블릿에서 모니터링 가능

카테고리 : Middleware

6,420 0
작성자 : 미들웨어 21/05/22
Total 114건
게시물 검색

주식회사 클럭스| 대표 : 이찬호| 사업자등록번호 : 107-87-27655
주소 : 서울특별시 영등포구 국회대로 800, 여의도파라곤
E-mail : sales@chlux.co.kr
Copyright © 클럭스 www.chlux.co.kr All rights reserved.
상단으로Top