
Estou tendo problemas para bloquear um IP em .htaccess
eu coloquei
Require not ip 192.168.20.218
Funciona, mas bloqueia toda a rede em vez de bloquear um único IP.
Alguém pode resolver esse problema?
Estou executando no Apache 2.4 usando Ubuntu 14.04.3 LTS
ATUALIZAR:cenário é assim, estou usando IP 192.168.20.218
no meu computador, estou tentando fazer um teste para bloquear esse endereço IP, tentei:
<RequireAll>
Require all granted
Require not ip 192.168.20.218
</RequireAll>
O que deveria bloquear meu acesso, mas ainda me permite acessar a página. Se eu tirar, Require all granted
ele bloqueará toda a rede.
Responder1
Você não pode usar umnegadodirectiva por si só para autorizar o acesso. Como observado ema documentação:
O resultado da
Require
directiva pode ser negado através da utilização danot
opção. Tal como acontece com a outra diretiva de autorização negada<RequireNone>
,quando aRequire
diretiva é negada, ela só pode falhar ou retornar um resultado neutro e, portanto, nunca poderá autorizar independentemente uma solicitação.
Você precisaria fazer algo como o seguinte:
<RequireAll>
Require all granted
Require not ip 192.168.20.218
</RequireAll>
Assim, você permite todos e exclui um endereço IP específico.
O <RequireAll>
contêiner, como o próprio nome sugere, exige que todas as diretivas contidas sejam atendidas.
Responder2
Eu tive esse problema. Esqueci que tinha um proxy reverso nginx instalado. O IP que entrou no Apache foi o IP do proxy reverso do nginx. Em vez disso, tive que definir um cabeçalho personalizado no proxy reverso contendo o IP verdadeiro e, em seguida, verificar esse cabeçalho em .htaccess em vez de verificar o IP.