일부 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-For
HTTP 요청처럼 헤더에 원래 원격 IP 주소를 설정합니다. RemoteIpHeader
외부에 있는 지시어 에 전달하세요 <Directory>
.
%a
mod_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>