프록시 뒤의 Apache: 특정 IP를 우회하는 Auth Basic

프록시 뒤의 Apache: 특정 IP를 우회하는 Auth Basic

일부 IP에 대해 기본 인증을 우회해야 하며 Apache는 2.4이고 haproxy 뒤에 있으므로 이를 문서 루트 섹션에 삽입했습니다.

<Directory /path/to/webroot>
    AuthUserFile /etc/apache2/.htpasswd
    AuthType Basic
    AuthName "Restricted Content"
    <Limit GET>
        Require valid-user
    </Limit>
    Require ip xxx.xxx.xxx.xxx
    Satisfy any
</Directory>

그러나 작동하지 않습니다. Apache는 프록시 뒤에 있습니다. Apache에 도달하는 IP는 클라이언트가 아니라 프록시이기 때문에 작동하지 않을 수 있습니다.

답변1

활성화 및 구성mod_remoteip. 프록시는 X-Forwarded-ForHTTP 요청처럼 헤더에 원래 원격 IP 주소를 설정합니다. RemoteIpHeader외부에 있는 지시어 에 전달하세요 <Directory>.

%amod_remoteip가 제대로 작동하는 경우 in을 사용하여 프록시가 전달한 원래 원격 주소를 확인할 수 있습니다 LogFormat. 이것을 먼저 확인해야합니다.

Apache 2.4 Satisfy지시문은 다음과 같습니다.더 이상 사용되지 않음.그리고 불필요한 내용을 추가하여 승인 조건을 복잡하게 만들지 않는 것이 좋습니다 <Limit>.

다음 구성을 사용해 보세요.

RemoteIPHeader X-Forwarded-For

<Directory /path/to/webroot>
    AuthUserFile /etc/apache2/.htpasswd
    AuthType Basic
    AuthName "Restricted Content"
    Require valid-user
    Require ip xxx.xxx.xxx.xxx
</Directory>

관련 정보