LB(로드밸런서) 등 앞단에 Proxy(프락시)를 타고 웹서버에 접속시 IP제어설정 총정리

Tip & Tech

활용팁

홈 > 회원포럼 > 활용팁
활용팁

LB(로드밸런서) 등 앞단에 Proxy(프락시)를 타고 웹서버에 접속시 IP제어설정 총정리

5 나눗자료 3 397 2 0

웹서버 로드밸런싱 적용시 표시되는 클라이언트 ip가 로드밸런싱 등 웹서버 앞단의 장비ip로 표시가 됩니다.

이에 실제 클라이언트 ip를 확인하기 위하여 XFF(X-forwarded-for) 설정을 해줘야 합니다.


그누보드에 적용관련 자료들이 많이 나오지 않은 관계로 필요하실 분들이 있을것 같아

제가 직접 적용하면서 적용했던 부분을 아래와 같이 공유드리며 참고바랍니다.


혹시 내용에 부족한 부분이 있다면 코멘트로 추가해 주시면 감사하겠습니다.


적용서버 환경 및 구성:

- AWS AmazonAMI로 프리티어 사용

- Apache PHP 로 구성

- AWS RDS MySQL 사용

- AWS ELB 적용 및 ACM인증서 적용


1. 아파치 로그 포맷 수정

/etc/httpd/httpd.conf 파일 로그부분 적용내용

---------------------------------------------------------

LogFormat "%{X-forwarded-for}i %l %u %t \"%r\" %>s %b \"%{Referer}i\" \"%{User-Agent}i\"" combined

LogFormat "%{X-Forwarded-For}i %l %u %t \"%r\" %>s %b" common

LogFormat "%{Referer}i -> %U" referer

LogFormat "%{User-agent}i" agent


2. 아파치 가상호스트 로그포맷 설정내용

---------------------------------------------------------

<VirtualHost *:80>

ServerAdmin root@localhost

DocumentRoot /zrbox/apache/www

ServerName www.zrbox.com

CustomLog "|/usr/sbin/rotatelogs /zrbox/apache/logs/access_log.%Y%m%d 86400" combined

ErrorLog "|/usr/sbin/rotatelogs /zrbox/apache/logs/error_log.%Y%m%d%H%M%S 86400"

</VirtualHost>


3. 아미나빌더 및 그누보드5 common.php 파일 최상단에 추가

파일위치: /아미나빌더/common.php

---------------------------------------------------------

if ($_SERVER['HTTP_X_FORWARDED_FOR'])

    $_SERVER['REMOTE_ADDR'] = $_SERVER['HTTP_X_FORWARDED_FOR'];


4. PHPMYADMIN 등 툴을 이용하여 데이터베이스에 기록된 접속자 데이터 삭제

테이블명: g5_login

해당 부분 진행 후에도 계속 장비IP(172.x.x.x 등)가 남는다면 Geoip 모듈을 설치 후 진행하면 해결됩니다.


5. 아파치 Geoip 모듈사용시 GeoIPScanProxyHeaders On 옵션 추가

참고 URL: https://dev.maxmind.com/geoip/legacy/mod_geoip2/ 

----------------------------------------------- 

LoadModule geoip_module modules/mod_geoip.so 


<IfModule mod_geoip.c> 

  GeoIPEnable On 

  GeoIPScanProxyHeaders On 

  GeoIPDBFile /usr/share/GeoIP/GeoIP.dat 

</IfModule> 


<Directory /zrbox/apache/www> 

SetEnvIf GEOIP_COUNTRY_CODE KR go_in 

Order deny,allow 

deny from all 

Allow from env=go_in 

</Directory>


기타. iptables 웹포트80, 원격포트22만 오픈

---------------------------------------------------------

Chain INPUT (policy ACCEPT 5082 packets, 19M bytes)

 pkts bytes target     prot opt in     out     source               destination

 1421  157K ACCEPT     tcp  --  *      *       0.0.0.0/0            0.0.0.0/0            tcp dpt:80

  913 51644 ACCEPT     tcp  --  *      *       0.0.0.0/0            0.0.0.0/0            tcp dpt:22


Chain FORWARD (policy ACCEPT 0 packets, 0 bytes)

 pkts bytes target     prot opt in     out     source               destination


Chain OUTPUT (policy ACCEPT 9130 packets, 8735K bytes)

 pkts bytes target     prot opt in     out     source               destination


3 Comments
21 선구자 2018.12.22 11:02  
저도 집서버 망가져서 ec2
아마존 리룩스로 구성했는데
반가운 글이네요

마이그레이션만 남아있습니다
4 유턴 2018.12.22 14:32  
감사합니다. 우선 스크랩하고 차근차근 시도해보겠습니다!!
2 칠성 03.23 17:04  
저는 varnish 쓰면서 아래와 같이 설정했습니다.

http://www.7-star.net/bbs/board.php?bo_table=talk_computer&wr_id=5
제목
최근 글
최근 댓글
Facebook Twitter GooglePlus KakaoStory KakaoTalk NaverBand