Casos en los que se puede usar Kestrel con un proxy inverso

Kestrel puede usarse por sí solo o con un servidor proxy inverso. Un servidor proxy inverso recibe las solicitudes HTTP de la red y las reenvía a Kestrel. Entre los ejemplos de un servidor proxy inverso, se incluyen los siguientes:

Kestrel empleado como servidor web perimetral (accesible desde Internet):

Kestrel communicates directly with the Internet without a reverse proxy server

Kestrel empleado en una configuración de proxy inverso:

Kestrel communicates indirectly with the Internet through a reverse proxy server, such as IIS, Nginx, or Apache

Cualquiera de las configuraciones, con o sin servidor proxy inverso, es una configuración de hospedaje admitida.

Cuando se usa Kestrel como un servidor perimetral sin un servidor proxy inverso, no se permite compartir la misma dirección IP y el mismo puerto entre varios procesos. Si Kestrel se configura para escuchar en un puerto, Kestrel controla todo el tráfico de ese puerto, independientemente de los encabezados Host de las solicitudes. Un proxy inverso que puede compartir puertos puede reenviar solicitudes a Kestrel en una única dirección IP y puerto.

Aunque no sea necesario un servidor proxy inverso, su uso puede ser útil.

Un proxy inverso puede hacer lo siguiente:

  • Limitar el área expuesta públicamente de las aplicaciones que hospeda.
  • Proporciona una capa extra de configuración y defensa.
  • Posiblemente, integrarse mejor con la infraestructura existente.
  • Simplificar el equilibrio de carga y la configuración de una comunicación segura (HTTPS). Solo el servidor proxy inverso requiere el certificado X.509 para los dominios públicos. Ese servidor puede comunicarse con los servidores de la aplicación en la red interna mediante HTTP sin formato o HTTPS con certificados administrados localmente. HTTPS interno aumenta la seguridad, pero agrega una sobrecarga significativa.

Advertencia

El hospedaje en una configuración de proxy inverso requiere filtrado de hosts.

Recursos adicionales

Configurar ASP.NET Core para trabajar con servidores proxy y equilibradores de carga