Skip to Content
Go Back
안형우

안녕하세요. 14년차 풀스택 웹개발자 안형우입니다. 이 블로그에서는 WordPress, PHP, CSS, 사용성, 리눅스 서버 등 풀스택 웹개발에서 마주하는 다양한 문제 상황과 해결책, 필요한 개념들을 다룹니다. 👉 소개


작업물

📌 CSS가 어려운 이유 — 프로젝트 중심 실전 CSS 강의 소개 2023-04-13
📌 워드프레스, 답답한 빌더와 플러그인 대신 시원하게 커스터마징하기(강의) 2023-01-15
📌 아무도 말하지 않는 PHP의 좋은 점 2018-10-13
📌 유지보수하기 쉬운 CSS 전략(슬라이드) 2016-12-20
📌 워드프레스 테마에서 템플릿 파일 매칭 순서 2013-05-12
📌 [번역] CSS 코드 냄새 2013-01-01

클라우드플레어 DNS 프록시 사용할 때 아파치 로그에 IP 주소 제대로 찍히게 하기

클라우드플레어 DNS 프록시를 사용하면 서버의 부담을 줄일 수 있고, 보안에도 도움이 된다.

그런데 문제는 서버 로그에 클라우드플레어 ip만 남게 된다는 점이다. 트래픽이 클라우드플레어를 거쳐서 오니 그렇다.

원래의 ip를 기록하게 하는 방법이 있다. 클라우드플레어 자신의 안내글이다. 제목은 “방문자의 원래 IP 되살리기(Restoring original visitor IPs)”. 이 글에서 mod_remoteip 부분만 보면 된다. mod_cloudflare 라는 것도 원래 있었던 것 같은데 더이상 유지보수하지 않는다고 한다.

remoteip 모듈 활성화

우선 remoteip 모듈을 활성화한다.

sudo a2enmod remoteip

가상호스트 설정 업데이트

그리고 가상 호스트 설정 파일(/etc/apache2/sites-available/mytory.net.conf 같은 파일)을 열어서 아래 코드를 한 줄 넣어 준다.

RemoteIPHeader CF-Connecting-IP

그러면 아마 내용이 아래처럼 될 것이다.

<VirtualHost *:80>
  ServerName mytory.net
  ServerAdmin [email protected]
  DocumentRoot /var/www/mytory.net
  RemoteIPHeader CF-Connecting-IP
  ErrorLog ${APACHE_LOG_DIR}/error.log
  CustomLog ${APACHE_LOG_DIR}/access.log combined
</VirtualHost>

로그 포맷 업데이트

이제 아파치의 로그 포맷 설정을 업데이트해야 한다. 핵심은 %h를 찾아서 %a로 바꾸는 것이다.

우분투라면 /etc/apache2/apache.conf 파일을 연다. 그리고 LogFormat을 찾는다.

그리고 %h%a로 바꾼다. 아마 아래처럼 될 것이다(%a에 노란색으로 표시를 했다).

LogFormat "%v:%p %a %l %u %t \"%r\" %>s %O \"%{Referer}i\" \"%{User-Agent}i\"" vhost_combined
LogFormat "%a %l %u %t \"%r\" %>s %O \"%{Referer}i\" \"%{User-Agent}i\"" combined
LogFormat "%a %l %u %t \"%r\" %>s %O" common

신뢰하는 프록시 주소

신뢰하는 프록시 주소를 /etc/apache2/conf-available/remoteip.conf 에 써 주라고 한다. 클라우드플레어 ip들로 채워 줘야 하는데 여기에서 구할 수 있다: IP Ranges

아래처럼 만들면 된다. 이 ip 주소들은 2023년 2월 1일 기준 ip들이다.

RemoteIPHeader CF-Connecting-IP
RemoteIPTrustedProxy 173.245.48.0/20
RemoteIPTrustedProxy 103.21.244.0/22
RemoteIPTrustedProxy 103.22.200.0/22
RemoteIPTrustedProxy 103.31.4.0/22
RemoteIPTrustedProxy 141.101.64.0/18
RemoteIPTrustedProxy 108.162.192.0/18
RemoteIPTrustedProxy 190.93.240.0/20
RemoteIPTrustedProxy 188.114.96.0/20
RemoteIPTrustedProxy 197.234.240.0/22
RemoteIPTrustedProxy 198.41.128.0/17
RemoteIPTrustedProxy 162.158.0.0/15
RemoteIPTrustedProxy 104.16.0.0/13
RemoteIPTrustedProxy 104.24.0.0/14
RemoteIPTrustedProxy 172.64.0.0/13
RemoteIPTrustedProxy 131.0.72.0/22

그리고 아래 명령어로 이 설정을 활성화해 준다.

sudo a2enconf remoteip

아파치 재시작

아래 명령어로 설정에 이상이 없는지 확인을 먼저 한다.

sudo apache2ctl configtest

Syntax OK 메시지가 나오면 아파치를 재시작한다.

sudo systemctl restart apache2

안녕하세요. 14년차 풀스택 웹개발자 안형우입니다. 이 블로그에서는 WordPress, PHP, CSS, 사용성, 리눅스 서버 등 풀스택 웹개발에서 마주하는 다양한 문제 상황과 해결책, 필요한 개념들을 다룹니다. 👉 소개


작업물

답글 남기기

이메일 주소는 공개되지 않습니다. 필수 필드는 *로 표시됩니다