- X-Forwarded-For 설정은 WebtoB에서 NODE 절에 RPAFHeader 로 설정한다.
- RPAFHeader로 설정된 header가 들어올 경 header의 IP 값으로 Remote IP를 변경한다.
- AcceLog 에도 X-Forwarded-For 설정을 통해 IP를 바꿔 볼 수 있다.
1. WebtoB 설정파일(http.m)을 수정한다.
- *NODE 절에 RPAFHeader = " X-Forwarded-For" 을 추가한다.
- 설정 후 컴파일(wscfl -i http.m) 재 기동(wsdown > wsboot)한다.
*NODE
tmax WEBTOBDIR="/home/tmax/webtob",
SHMKEY = 54000,
DOCROOT="/home/tmax/webtob/docs",
PORT = "80",
HOSTNAME = "127.0.0.1",
RPAFHeader = " X-Forwarded-For",
HTH = 1,
NODENAME = "$(NODENAME)",
ServiceOrder = "uri,ext",
UpperDirRestrict = Y,
ERRORDOCUMENT = "400,401,403,404,405,406,503",
METHOD = "GET, POST, HEAD, -OPTIONS",
JSVPORT = 9900,
IPCPERM = 0777,
LOGPERM = 0600,
LOGGING = "acc_node",
ERRORLOG = "err_node",
SYSLOG = "syslog"
2. ACCESS LOG 절에 X-Forwarded-For을 설정하기 위해서는 로그 타입을 변경해야 한다.
- 설정 후 컴파일 재 기동 필요
타입 변경 "%{X-Forwarded-For}i %l %u %t %r %s %b %{Referer}i %{User-Agent}i "
*LOGGING
변경 전
acc_erp Format = "DEFAULT", FileName = "/home/tmax/webtob/log/erp/access_%Y%%M%%D%.log", Option = "sync"
err_erp Format = "ERROR", FileName = "/home/tmax/webtob/log/erp/error_%Y%%M%%D%.log",
변경 후
acc_erp Format = " %{X-Forwarded-For}i %l %u %t %r %s %b %{Referer}i %{User-Agent}i ", FileName = "/home/tmax/webtob/log/erp/access_%Y%%M%%D%.log", Option = "sync"
err_erp Format = "ERROR", FileName = "/home/tmax/webtob/log/erp/error_%Y%%M%%D%.log",
3. 로그 포멧에 대한 설명
Format(필수 항목)
- 종류: Literal
- 범위: 255자 이내
- 로그 파일에 기록될 메시지의 포맷을 설정한다.
- *USERLOGFORMAT 절에서 정의한 로그 포맷 이름으로 설정 할 수 있다.
- 다음 Format string은 액세스 로그와 에러 로그에만 적용된다. 시스템 로그는 임의 값을 설정한다.
- 포맷설명
DEFAULT Default Log File Format이다.
(약자: "%h %t \"%r\" %s %b %D")COMMON Common Log File Format이다.
(약자: "%h %l %u %t \"%r\" %s %b")COMBINED Combined Log File Format이다.
(약자: "%h %l %u %t \"%r\" %s %b \"%{Referer}i\" \"%{User-Agent}i\")%a 요청을 보낸 장비의 IP 주소를 표시한다. %h와 동일하다. %b 응답의 Byte를 표시한다. %c WebtoB 응답 생성 위치를 표시한다.
- 내부 캐시에서 응답이 생성된 경우 "hc" 로 표시한다.
- 디스크 캐시에서 응답이 생성된 경우 "dc"로 표시한다.
- sendfile에서 응답이 생성된 경우 "sf"로 표시한다.
- sendfile / disk cache 에서 생성된 경우 "sf/dc"로 표시한다.
- remote 에서 생성된 경우 "hm"로 표시한다.
%{_attr_name_}C HTTP Request의 Cookie Header 값 중 '_attr_name_'에 해당하는 값을 표시한다. %d 응답이 전송된 시간을 표시한다. %D 요청을 처리하는데 소요된 시간을 표시한다. (단위: millisecond) %{ENV_NAME}e 환경변수 ENV_NAME을 출력한다. %g WebtoB가 내부적으로 사용하는 요청 식별자를 출력한다. %h 요청을 보낸 장비의 IP 주소를 표시한다. %H 사용한 HTTP 버전을 표시한다. %{HEADER_FIELD}i HTTP Request의 HEADER_FIELD Header 값을 표시한다. %{_id_name_}J 요청을 JEUS로 포워딩하여 처리하는 경우 내부적으로 사용하는 요청의 식별정보를 표시한다.
- _id_name이 JSVCid이면 Client ID이다.
- _id_name이 JSVReqSeq이면 Request Sequence이다.
%m HTTP Request 메소드를 표시한다. %p Request가 도착한 서버의 포트 번호를 표시한다. %q HTTP Request의 query 값을 표시한다. %r HTTP Request의 Request line 전체를 표시한다. %R HTTP Request의 Request line 전체를 표시한다. CheckURL이나 URLRewrite 기능에 의해 변경된 Request line을 표시한다. %s 응답에 사용된 HTTP Status Code를 표시한다. %t 요청처리를 마친 시간을 표시한다. %T Request를 처리하는 데 소요된 시간을 표시한다. (단위: 초) %u HTTP 인증에 사용된 user 이름을 표시한다. %U HTTP Request URI를 표시한다. %v Host Header 필드 값을 표시한다. %z 응답이 압축된 경우 압축 전/후의 응답 크기와 압축률을 표시한다. %S http와 https를 구분하여 표시한다. %A 서버의 IP 주소를 표시한다.