로드 밸런서 뒤에있는 동안 REMOTE_ADDR에 대한 .htaccess RewriteCond?


9

로드 밸런서 뒤에 웹 서버가 있습니다.

유지 관리를 위해 사이트를 오프라인으로 전환 할 때마다 유지 관리 페이지를 표시하려면 .htaccess에 조건부 리디렉션을 추가해야합니다. 이 부분은 간단합니다.

RewriteEngine on
RewriteCond %{REQUEST_URI} !/maintenance.php$ [NC]
RewriteCond %{REQUEST_URI} !\.(jpe?g?|png|gif) [NC]
RewriteRule .* /maintenance.php [R=302,L]

그러나 방문자의 IP 주소가 내 개인의 경우 유지 관리 페이지로 리디렉션되지 않으며 사이트가 온라인 인 것처럼 사이트를보고 테스트 할 수 있다는 조건을 추가하고 싶습니다. 이 부분은 일반적으로 간단합니다.

RewriteEngine on
RewriteCond %{REMOTE_ADDR} !^11\.111\.111\.111
RewriteCond %{REQUEST_URI} !/maintenance.php$ [NC]
RewriteCond %{REQUEST_URI} !\.(jpe?g?|png|gif) [NC]
RewriteRule .* /maintenance.php [R=302,L]

그러나 웹 서버가로드 밸런서 뒤에 있기 때문에 REMOTE_ADDR로드 밸런싱 서버의 내부 IP 주소로 확인됩니다.

전달 된 IP 주소를 찾기 위해이를 어떻게 변경할 수 있습니까? PHP $_SERVER['HTTP_X_FORWARDED_FOR']에서 전달 된 IP 주소를 얻는 데 사용할 수 있다는 것을 알고 있습니다 . 나는 몇 가지 일을 시도 .htaccess했지만 운이 없다.

%{X_FORWARDED_FOR}
%{HTTP:X_FORWARDED_FOR}
%{HTTP_X_FORWARDED_FOR}

해결책

나는 다음을 작동시켰다.

%{HTTP:X-FORWARDED-FOR}

% {HTTP : X-Forwarded-For}가 올바른 것입니다. 대소 문자를 구분합니까?
Jeff Strunk

모든 모자가 나를 위해 일했습니다. 대소 문자를 구분하지 않거나 별명 또는 다른 것 같습니다.
Jake Wilson

당신은 정말로 봉사 .jpe하거나 .jp파일을 제공합니까?
7heo.tk

답변:


10

%{HTTP:X-FORWARDED-FOR}대신 사용%{REMOTE_ADDR}


귀하의 질문에 이미 답변했지만, 아래에 해당하는 답변이 없습니다. 답변 주셔서 감사합니다! 오늘 저를 구했습니다.
Ryan

2

mod_rpaf 가 필요 합니다 . 이 모듈은 x-forwarded-for와 같은 다른 헤더로 아파치에서 REMOTE_ADDR을 다시 작성합니다. PHP 앱이로드 밸런서와 동작하도록하는 데 매우 유용합니다.



0

로드 밸런스 뒤의 프로덕션 하나와로드 밸런스 뒤에서 개발 또는 스테이징이없는 두 개의 환경이 있고 동일한 .htaccess 파일을 사용하려는 경우 % {HTTP : X-FORWARDED-FOR} 및 % {REMOTE_ADDR}-두 조건 모두에 IP 주소를 할당합니다.


1
또한 일부 아파치 서버에서는 백 슬래시가 서버를 혼동합니다. 백 슬래시가 반복되는 작업을 수행 할 수없는 경우! ^ 123.123.123.123 (백 슬래시없이 IP 123.123.123.123이 아닌 경우)을 입력하십시오.
Andrew S
당사 사이트를 사용함과 동시에 당사의 쿠키 정책개인정보 보호정책을 읽고 이해하였음을 인정하는 것으로 간주합니다.
Licensed under cc by-sa 3.0 with attribution required.