¿Cómo dirigir al visitante a cierto servicio http según su "host"?

¿Cómo dirigir al visitante a cierto servicio http según su "host"?

Quiero dirigir a los usuarios a diferentes servicios web con configuración de nginx.

El escenario es para los usuarios internos con nombre de host de 192.168.1.1a. 192.168.1.255Quiero ofrecerles algún servicio web, pero para el otro visitante externo no quiero que esto se realice.

Sé que podría usar IP_TABLESpara habilitar esta función, pero uso las reglas IP_TABLE principalmente para fines de firewall, no quiero mezclarlas con esta configuración.

¿Hay alguna configuración disponible para mí en nginx.conf?

Respuesta1

Puede utilizar el módulo GEO junto con una directiva de mapa:

http {
  geo $special_service {
    default 0;
    192.168.1.0/24 1;
  }
  server {
    if ($special_service) {
      return 302 $scheme://$server_name/special-service/;
    }
  }
}

Respuesta2

Cree un locationbloque separado que cubra su contenido confidencial.

Tenga en cuenta que las directivas de configuración no se heredan; deberá incluir en el nuevo bloque todo lo que esté en la "ubicación existente que sea necesaria para su contenido".

location /path/to/sensitive/stuff {
    # any other config that you need goes here..
    # ...
    allow 192.168.1.0/24;
    deny all;
}

información relacionada