¿Cómo restringir el acceso desde una única IP por host HTTP en nginx?

¿Cómo restringir el acceso desde una única IP por host HTTP en nginx?

Tengo un servidor con varios sitios web, cada uno con su propio servidor.

¿Hay alguna manera en nginx de bloquear el acceso 0.0.0.0/0y permitir una IP específica, digamos 1.2.3.4/32para un sitio web específico (host/nombre de dominio específico)?

Por ejemplo:

  • Si una solicitud HTTP viene con el encabezado del host, www.something-public.compermita todo.
  • Si una solicitud HTTP viene con el encabezado del host, www.something-private.comniegue todo y permita una dirección IP específica.

Un problema adicional que tengo es que no se confía en los propietarios del sitio web y quiero restringirlos a través de esta regla al no permitirles cambiarla a través de archivos de configuración en los directorios del sitio web (como .htaccessarchivos que anulan la configuración del directorio principal).

Respuesta1

El módulongx_http_access_moduletiene comandos de permitir y denegar que puede colocar en los bloques de su 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;
}

información relacionada