
.htaccess에서 IP를 차단하는 데 문제가 있습니다.
나는 넣었다
Require not ip 192.168.20.218
작동하지만 단일 IP를 차단하는 대신 전체 네트워크를 차단합니다.
누군가 이 문제를 해결할 수 있나요?
Ubuntu 14.04.3 LTS를 사용하여 Apache 2.4에서 실행 중입니다.
업데이트:시나리오는 다음과 같습니다. 192.168.20.218
내 컴퓨터에서 IP를 사용하고 있으며 이 IP 주소를 차단하는 테스트를 수행하려고 합니다. 다음을 시도했습니다.
<RequireAll>
Require all granted
Require not ip 192.168.20.218
</RequireAll>
내 액세스를 차단해야 하는데, 대신 여전히 페이지 액세스를 허용하고 있습니다. 제거하면 Require all granted
전체 네트워크가 차단됩니다.
답변1
당신은 사용할 수 없습니다부정하다액세스 권한을 부여하기 위해 지시어 자체를 사용합니다. 에서 언급한 바와 같이문서:
Require
옵션 을 사용하면 지시어 의 결과가 무효화될 수 있습니다not
. 다른 부정된 인증 지시문과 마찬가지로<RequireNone>
,지시문이 부정 되면Require
실패하거나 중립 결과만 반환할 수 있으므로 요청을 독립적으로 승인할 수 없습니다..
대신 다음과 같은 작업을 수행해야 합니다.
<RequireAll>
Require all granted
Require not ip 192.168.20.218
</RequireAll>
따라서 모든 사람을 허용하고 특정 IP 주소를 제외합니다.
이름에서 알 수 있듯이 컨테이너 <RequireAll>
에는 포함된 모든 지시문이 충족되어야 합니다.
답변2
나는이 문제가 있었다. nginx 리버스 프록시가 있다는 것을 잊어버렸습니다. Apache에 들어오는 IP는 nginx의 역방향 프록시 IP였습니다. 대신 실제 IP가 포함된 역방향 프록시에 사용자 정의 헤더를 설정한 다음 IP를 확인하는 대신 .htaccess에서 이 헤더를 확인해야 했습니다.