extract_forwarded_module을 사용하여 REMOTE_ADDR에 액세스 소스 IP 설정
하고 싶은 일
.htaccess 내에서 modRewrite를 사용하여 IP 주소로 유지 보수 페이지로 나누기를 원합니다.
허가 IP의 경우는 열람 가능, 그 이외는 메인터넌스 페이지를 표시로 한다고 하는 대응을 실시한다.
환경
CloudFront(이후 CDN)
ELB
Amazon Linux(이후 EC2)
구성으로서는 CDN을 경유해, ELB를 지나, EC2에의 액세스 됩니다.
문제점
.htaccess에서 "X_FORWARDED_FOR"을 사용하여 액세스 소스의 IP 주소를 결정하려고 시도한 결과, "X-Forwarded-For"에 여러 IP가 나열되어 modRewrite를 사용한 IP 주소 등에 의한 페이지 분류 수 없었다.
위의 환경 문제로 인해 CDN의 IP 주소가 분명히 출력되는 것 같습니다.
본래는 ELB의 IP 주소도 기재될 것입니다만, 이번 apache 모듈의 「mod_rpaf」를 넣고 있기 때문에, ELB의 IP는 없었습니다.
생각한 것(대책)
■ phpinfo에서 IP 주소 확인
1은 IP 주소로 액세스 제한할 수 있습니다만, 페이지의 배분을 할 수 없기 때문에 거부.
2를 채용한다.
했던 일
1. extract_forwarded_module 설치
yum에서 설치를 수행합니다.
$ sudo yum install mod_extract_forwarded
2. mod_extract_forwarded.conf 편집
MEFaccept를 'all'으로 변경
# コメントは省略しています
LoadModule extract_forwarded_module modules/mod_extract_forwarded.so
MEForder refuse,accept
MEFrefuse all
MEFaccept all
MEFaddenv on
MEFdebug off
3. "httpd.conf"편집
mod_extract_forwarded.so를로드하도록 편집합니다.
LoadModule을 검색하고 mod_extract_forwarded.so를 추가합니다.
이미 추가되었고 댓글이 달린 경우 댓글을 뽑습니다.
또 환경에 의해 파일명이나, PATH가 다를지도 모르기 때문에, module 디렉토리 부하에서 「extract_forwarded」를 검색해 적절한 것으로 변경할 필요가 있습니다.
LoadModule extract_forwarded_module modules/mod_extract_forwarded.so
apache 재부팅
설정을 반영
$ /etc/init.d/httpd restart
확인
phpinfo에서 REMOTE_ADDR을 확인한다.
감상
무사히 액세스 원래 IP 주소를 얻을 수 안심.
CDN이나 SetEnv를 사용한 제어를 할 수 있을지도 모릅니다만, 조사할 시간이 없고 단념.
좀 더 CDN이나 ELB(어플리케이션 로드 밸런서)등을 사용한 환경도 연구해 여러가지 지견을 위해 가려고 생각합니다.
고마워요! !
Reference
이 문제에 관하여(extract_forwarded_module을 사용하여 REMOTE_ADDR에 액세스 소스 IP 설정), 우리는 이곳에서 더 많은 자료를 발견하고 링크를 클릭하여 보았다 https://qiita.com/mura-no/items/dca2e1073822377ed498텍스트를 자유롭게 공유하거나 복사할 수 있습니다.하지만 이 문서의 URL은 참조 URL로 남겨 두십시오.
우수한 개발자 콘텐츠 발견에 전념 (Collection and Share based on the CC Protocol.)