Como restringir o acesso de um único IP por host HTTP no nginx?

Como restringir o acesso de um único IP por host HTTP no nginx?

Tenho um servidor com vários sites, cada um com seu próprio host.

Existe uma maneira no nginx de bloquear o acesso 0.0.0.0/0e permitir um IP específico, digamos, 1.2.3.4/32para um site específico (host/nome de domínio específico)?

Por exemplo:

  • Se uma solicitação HTTP vier com o cabeçalho do host, www.something-public.compermita tudo.
  • Se uma solicitação HTTP vier com o cabeçalho do host, www.something-private.comnegue tudo e permita um endereço IP específico.

Um problema adicional que tenho é que os proprietários do site não são confiáveis ​​e quero restringi-los por meio desta regra, não permitindo que eles a alterem por meio de arquivos de configuração nos diretórios do site (como .htaccessarquivos que substituem as configurações do diretório pai).

Responder1

O módulongx_http_access_moduletem comandos permitir e negar que você pode colocar em seus blocos de servidor.

server {
  server_name www.something-public.com;
  allow all; // I think this is the default and the statement is not needed
}

server {
  server_name www.something-private.com;
  allow 192.168.1.1/32;
  deny  all;
}

informação relacionada