카테고리 보관물: Server

Server

로드 밸런서 뒤에있는 동안 REMOTE_ADDR에 대한 .htaccess RewriteCond? 경우 유지 관리

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

유지 관리를 위해 사이트를 오프라인으로 전환 할 때마다 유지 관리 페이지를 표시하려면 .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}대신 사용%{REMOTE_ADDR}


답변

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


답변


답변

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


답변