Cómo instalar y configurar NGINX Server en Windows 11

Última actualización: 14 de agosto de 2026
Autor: Isaac
  • NGINX destaca por su alto rendimiento, bajo consumo de recursos y flexibilidad como servidor web y proxy inverso.
  • La versión para Windows 11 es funcional pero beta, adecuada para desarrollo, con algunas limitaciones frente a Linux.
  • La configuración basada en ficheros de texto permite adaptar rutas, puertos y comportamiento a casi cualquier escenario.
  • Combinado con systemd en Linux o NSSM en Windows, NGINX se integra bien en entornos de ASP.NET Core y otros backends.

Instalar NGINX en Windows 11

Si quieres montar un entorno web rápido en tu PC, tener NGINX funcionando en Windows 11 es una de las formas más sencillas de empezar a servir páginas, probar aplicaciones o simular un entorno de producción sin salir de tu equipo. Aunque tradicionalmente se ha usado más en Linux, NGINX para Windows ha mejorado bastante y es más que suficiente para desarrollo, pruebas internas o montarte un pequeño laboratorio en casa.

En las siguientes líneas vas a ver cómo instalar, configurar y gestionar NGINX en Windows 11 paso a paso, qué limitaciones tiene esta versión frente a la de Linux, cómo integrarlo en redes locales, qué hacer cuando algo falla (errores 502, problemas de arranque, etc.) y, de paso, un repaso rápido a su uso en otros sistemas como macOS o Linux para que tengas la foto completa.

Qué es NGINX y por qué tanta gente lo usa

NGINX es un servidor web y proxy inverso de código abierto creado por Igor Sysoev en 2004, diseñado desde el principio para manejar muchísimas conexiones simultáneas gastando muy pocos recursos. La clave está en su arquitectura basada en eventos, que le permite gestionar peticiones sin necesidad de lanzar un montón de procesos o hilos por cada cliente.

Gracias a este diseño, NGINX se ha convertido en una opción ideal tanto para servir contenido estático (HTML, CSS, JavaScript, imágenes, vídeos) como para actuar de equilibrador de carga entre varios servidores backend. Es decir, no solo puede servir páginas, también puede repartir tráfico hacia aplicaciones en otros puertos o máquinas.

Otro de sus puntos fuertes es que soporta múltiples protocolos modernos como HTTP, HTTPS, WebSocket y otros más especializados. Esto lo hace muy versátil para proyectos que van desde una simple web corporativa hasta aplicaciones en tiempo real, APIs, microservicios o plataformas de streaming.

Entre los perfiles que más tiran de NGINX están los desarrolladores web, administradores de sistemas e ingenieros DevOps. Los primeros lo agradecen por su velocidad y facilidad para servir contenido o hacer de proxy; los segundos, por la flexibilidad de configuración y su estabilidad; y los terceros, porque encaja perfecto en pipelines de despliegue, escalado y alta disponibilidad.

De hecho, grandes compañías como Netflix, Cloudflare, Airbnb o Zappos utilizan NGINX como parte esencial de su infraestructura de entrega de contenidos y balanceo de tráfico. No son casos aislados: una parte enorme de los sitios más visitados del mundo pasa por NGINX en algún punto de la cadena.

Ventajas clave de usar NGINX

Una de las razones principales por las que tanta gente apuesta por NGINX es su alto rendimiento con un consumo mínimo de recursos. Gracias al modelo basado en eventos, puede gestionar miles de conexiones concurrentes sin disparar la CPU ni la memoria, algo muy importante en aplicaciones que reciben mucho tráfico.

También es un servidor muy escalable y extensible. Puedes empezar con una configuración muy básica en tu portátil y, cuando el proyecto crezca, escalar a varias máquinas, añadir módulos específicos o ponerlo delante de clusters completos de aplicaciones sin cambiar de tecnología.

La configuración de NGINX es extremadamente flexible. Mediante directivas en ficheros de texto, puedes ajustar desde directivas simples de root y listen hasta configuraciones complejas de reverse proxy, cacheo, compresión, seguridad o reescrituras de URL. Esta capacidad de adaptar el servidor a casi cualquier caso de uso es uno de sus mayores atractivos.

Otro punto importante es que NGINX funciona tanto como servidor web, proxy inverso y balanceador de carga. Puede recibir peticiones en el puerto 80 o 443, inspeccionarlas y reenviarlas a distintas aplicaciones backend (por ejemplo, una API en el puerto 5000, una app en Node.js en el 3000 y un servicio legacy en otro puerto) manteniendo una única entrada para los clientes.

Por último, NGINX cuenta con una comunidad muy activa y una documentación oficial muy completa. Encontrarás guías, ejemplos, foros y tutoriales para prácticamente cualquier escenario que se te ocurra, lo que facilita mucho aprender a sacarle partido y resolver problemas cuando algo no va como esperabas.

Requisitos previos y versiones de NGINX

Antes de ponerte a instalar NGINX en cualquier sistema, conviene tener unas bases mínimas de redes y funcionamiento de servidores web. No hace falta ser un experto, pero sí entender conceptos como puertos, direcciones IP, HTTP, servicios y cómo se trabaja con la línea de comandos.

También ayuda sentirse cómodo usando terminal o símbolo del sistema, porque muchas tareas de instalación, arranque, parada y prueba de NGINX se hacen con comandos. En Windows 11 esto pasa por usar CMD o PowerShell como administrador; en Linux y macOS, el terminal clásico.

A nivel de hardware, NGINX no es especialmente exigente: con 512 MB de RAM y unos 50 MB de espacio en disco tienes más que de sobra para un entorno de desarrollo o para webs pequeñas. Para entornos grandes sí tendrás que dimensionar en función de tráfico, contenido servido y número de conexiones concurrentes.

En cuanto a sistemas operativos, NGINX está disponible para Windows, macOS y distribuciones Linux como Ubuntu, Debian, CentOS o Fedora. Cada plataforma tiene sus particularidades de instalación y gestión de servicios, pero la filosofía general es la misma.

NGINX se distribuye en dos ramas principales: la versión stable, más probada y recomendada para producción, y la versión mainline, que incorpora antes las novedades y correcciones pero puede haber pasado por menos ciclos de test. En Windows, de hecho, se recomienda usar la rama mainline porque es la que incluye todos los parches más recientes.

Particularidades de NGINX en Windows 11

La versión de NGINX para Windows 11 utiliza la API Win32 nativa y no depende de capas de compatibilidad como Cygwin. Sin embargo, en Windows solo se usan actualmente los métodos de procesamiento de conexiones select() y poll(), lo que implica que no se alcanza el mismo nivel de rendimiento y escalabilidad que en Linux con epoll o kqueue.

Por ese motivo, el propio proyecto considera la versión de NGINX para Windows como beta. Ofrece casi la misma funcionalidad que la versión para UNIX, pero con algunas limitaciones importantes: no están disponibles el filtro XSLT, el filtro de imágenes, el módulo GeoIP ni el soporte para Perl embebido.

Además, en Windows hay otras restricciones técnicas: aunque es posible arrancar varios procesos worker, solo uno de ellos realiza realmente el trabajo de procesar peticiones; y la funcionalidad basada en UDP (y por extensión QUIC) aún no está soportada, lo que limita ciertas configuraciones avanzadas.

NGINX en Windows no se ejecuta como servicio de forma nativa, sino como una aplicación de consola. Esto significa que no se inicia automáticamente al arrancar el sistema, salvo que lo configures con herramientas externas típicas de Windows, como NSSM (Non-Sucking Service Manager), que permite registrar aplicaciones como servicios.

A nivel de rutas, NGINX en Windows usa el directorio desde el que se lanza el ejecutable como prefijo para las rutas relativas en el fichero de configuración. Además, incluso en Windows, las rutas deben indicarse en formato tipo UNIX, con barras inclinadas hacia delante, por ejemplo root C:/web/html;, no con backslashes.

Instalar NGINX Server en Windows 11 paso a paso

Para tener tu servidor NGINX funcionando en Windows 11 no necesitas instaladores complejos. El proceso consiste básicamente en descargar el ZIP oficial, descomprimirlo y ejecutar nginx.exe. A partir de ahí, ya tendrás un servicio web disponible en tu máquina.

Lo primero es ir a la página oficial de descargas de NGINX y localizar la sección de versiones para Windows. Se recomienda bajar la última distribución de la rama mainline (por ejemplo, nginx-1.31.3 o la que corresponda en ese momento), porque suele contener todas las correcciones conocidas hasta la fecha.

Una vez descargado el fichero ZIP, lo habitual es descomprimirlo en una ruta sencilla como C:\nginx-1.31.3\. Puedes usar el propio explorador de archivos de Windows: botón derecho sobre el ZIP, opción “Extraer todo” y elegir el directorio de destino. El contenido quedará listo para ser usado sin más instalaciones.

Para arrancar NGINX, abre un Símbolo del sistema o PowerShell con permisos de administrador. Navega hasta la carpeta donde has extraído NGINX con un comando tipo: cd C:\nginx-1.31.3, y una vez dentro ejecuta start nginx o simplemente nginx. Si todo va bien, NGINX se iniciará en segundo plano sin mostrar apenas salida en pantalla.

La comprobación rápida consiste en abrir tu navegador e ir a http://localhost. Si ves la página de bienvenida de NGINX, es que la instalación ha ido bien. Para asegurarte a nivel de procesos, puedes usar la utilidad de línea de comandos tasklist filtrando por el nombre de imagen: tasklist /fi "imagename eq nginx.exe". Deberías ver al menos dos procesos, uno maestro y uno worker.

Si NGINX no arranca o la página de bienvenida no aparece, revisa primero el fichero de log de errores en logs\error.log dentro del directorio de NGINX. Si ni siquiera existe ese log, el error probablemente se habrá registrado en el Visor de eventos de Windows. En ambos sitios deberías encontrar pistas sobre el motivo (puerto en uso, permisos, sintaxis de configuración, etc.).

En Windows 11, NGINX se ejecuta como aplicación de consola, no como servicio, así que tendrás que controlarlo manualmente con parámetros como nginx -s stop para parada rápida, nginx -s quit para apagado elegante, nginx -s reload cuando cambies la configuración o nginx -s reopen para reabrir los ficheros de log sin reiniciar todo el servicio.

Configurar NGINX como servicio en Windows con NSSM

Si te interesa que NGINX se levante automáticamente cada vez que arranca Windows 11, lo más práctico es usar una herramienta externa como NSSM (Non-Sucking Service Manager), que permite registrar ejecutables normales como servicios del sistema manejados por el Service Control Manager de Windows.

El primer paso es descargar NSSM desde su web oficial y extraer el contenido en una carpeta de tu elección, por ejemplo C:\nssm\. Después, abre una ventana de CMD o PowerShell con permisos de administrador y navega hasta allí con cd C:\nssm o la ruta que corresponda.

Para registrar NGINX como servicio, ejecuta un comando similar a nssm install nginx C:\nginx-1.31.3\nginx.exe, adaptando la ruta al ejecutable de tu instalación. NSSM te permitirá definir detalles como el nombre del servicio, el directorio de trabajo o parámetros adicionales, y dejará preparado el servicio para que lo gestione Windows.

Una vez creado el servicio, puedes iniciarlo con nssm start nginx o directamente desde la consola de servicios de Windows (services.msc). A partir de aquí, NGINX se comportará como cualquier otro servicio: podrás configurarlo para que se inicie automáticamente, reiniciarlo si falla, etc., sin tener que lanzar manualmente el ejecutable cada vez.

Recuerda que aunque se ejecute como servicio, NGINX en Windows mantiene sus limitaciones inherentes de rendimiento y soporte de módulos, así que es buena idea reservar esta configuración para entornos de desarrollo, pruebas internas o sitios con poco tráfico, y plantearte Linux para despliegues con mayor carga.

Configurar rutas, puertos y directorios en Windows y macOS

Una vez que tienes NGINX corriendo, el siguiente paso es ajustar la configuración del servidor para que sirva tus propios archivos. En Windows, el archivo principal suele estar en conf/nginx.conf dentro de la carpeta donde descomprimiste NGINX; en macOS, cuando se instala con Homebrew, la configuración principal suele estar en /usr/local/etc/nginx/nginx.conf.

La directiva clave es location /, que indica qué hacer con las peticiones a la raíz del sitio. Dentro de este bloque se define el root, que es la ruta donde NGINX buscará los archivos a servir. Por ejemplo, podrías configurarlo en Windows o macOS así: location / { root C:/web/html; index index.html index.htm; } usando rutas con barras hacia delante incluso en Windows.

Si trabajas en macOS con Homebrew, NGINX suele instalarse de forma que el contenido por defecto se sirva desde /usr/local/Cellar/nginx/versión/html. Es buena idea cambiarlo a un directorio más cómodo, como una carpeta en tu HOME, para evitar problemas de permisos y mantener tus proyectos más organizados.

Otra directiva importante es listen, que controla en qué puerto escucha NGINX. En Windows, por defecto se suele usar el puerto 80, mientras que en macOS instalado con Homebrew el puerto típico es el 8080. Si quieres evitar tener que escribir el puerto en la URL, cambia la directiva a listen 80; asegurándote de que no haya otro servicio ocupando ese puerto.

En entornos de desarrollo puede resultar muy útil activar el listado de directorios. Para ello, dentro del bloque location / puedes añadir la directiva autoindex on;. De este modo, cuando no haya un index.html ni index.htm en un directorio, NGINX mostrará el listado de archivos en lugar de devolver un 403, algo muy práctico para navegar por tus recursos mientras desarrollas.

Instalación y uso de NGINX en macOS con Homebrew

Si trabajas también con macOS, instalar NGINX allí es incluso más directo utilizando Homebrew como gestor de paquetes. Lo primero es tener Homebrew instalado; si aún no lo tienes, puedes seguir las instrucciones oficiales en su web y luego volver a la terminal.

Antes de instalar, conviene actualizar el índice de paquetes de Homebrew con brew update. Esto asegura que descargas la versión más reciente estable de NGINX compatible con tu sistema, junto con todas sus dependencias.

La instalación se hace con un simple brew install nginx. Tras completar el proceso, puedes arrancar NGINX como servicio en segundo plano usando brew services start nginx. Esto lo registrará para que se ejecute automáticamente cada vez que arranque tu Mac, de forma muy similar a un servicio de sistema.

Por defecto, NGINX en macOS escucha en el puerto 8080. Si abres el navegador y visitas http://localhost:8080, deberías ver la página de bienvenida. Si quieres cambiar al puerto 80, tendrás que modificar la directiva listen en /usr/local/etc/nginx/nginx.conf y asegurarte de que no haya otros servicios usando ese puerto.

Al igual que en Windows, puedes ajustar el root a la carpeta donde tienes tus proyectos, activar autoindex para listado de directorios y jugar con los bloques de servidor para definir varios sitios virtuales, vhosts, etc., todo siempre bajo la misma filosofía de configuración en texto plano.

Instalar y administrar NGINX en Linux (Ubuntu, Debian, CentOS, Fedora)

En Linux, NGINX encaja aún mejor porque aprovecha al máximo las APIs de I/O del sistema operativo, lo que se traduce en mayor rendimiento y capacidad para manejar más conexiones simultáneas con menos consumo de recursos. Además, la integración con los gestores de paquetes y systemd hace que la gestión sea muy cómoda.

En Ubuntu y Debian, el proceso típico arranca actualizando las listas de paquetes con sudo apt update. Después se instala NGINX con sudo apt install nginx, que descarga la última versión estable disponible en los repositorios oficiales de la distribución.

Una vez instalado, puedes iniciar y habilitar el servicio NGINX con systemd usando sudo systemctl start nginx y sudo systemctl enable nginx. El primero lo arranca inmediatamente; el segundo se asegura de que se levantará automáticamente en cada reinicio del sistema.

En CentOS y Fedora, la instalación puede requerir primero activar el repositorio EPEL (en el caso de CentOS) con sudo yum install epel-release. Después, se instala NGINX con sudo yum install nginx y se gestiona igualmente con systemctl: sudo systemctl start nginx y sudo systemctl enable nginx para que arranque siempre al iniciar.

En todas estas distribuciones, por defecto NGINX suele escuchar en el puerto 80, así que basta con ir a http://localhost o a la IP del servidor desde otra máquina para ver la página de bienvenida y confirmar que el servicio está funcionando correctamente.

Systemctl y gestión de servicios (demonios) en Linux

NGINX, como muchos otros servicios en Linux, se ejecuta como demonio gestionado por systemd. Esto te permite controlar su ciclo de vida con el comando systemctl, que se usa para arrancar, parar, reiniciar, habilitar o deshabilitar servicios, siempre con privilegios de superusuario (es decir, precediendo los comandos con sudo).

Por ejemplo, para comprobar el estado de NGINX puedes usar systemctl status nginx, que te mostrará si está activo, el PID del proceso principal, cuándo se arrancó y si está configurado para iniciarse automáticamente al arrancar el sistema, además de posibles mensajes de log recientes.

Si necesitas reiniciar el servicio porque has hecho cambios de configuración, puedes ejecutar sudo systemctl restart nginx. Esto detendrá el demonio y lo volverá a levantar con la nueva configuración. Es un comando muy útil después de editar los ficheros .conf.

Para detener NGINX de forma explícita se usa sudo systemctl stop nginx. En ese momento el servicio quedará parado, pero si está marcado como habilitado se volverá a iniciar en el próximo reinicio del servidor. Si lo que quieres es que no se arranque automáticamente, tendrás que usar sudo systemctl disable nginx.

Del mismo modo, si en algún momento lo habías deshabilitado y quieres que NGINX se arranque de nuevo al inicio del sistema, puedes ejecutar sudo systemctl enable nginx. Después de esto, un systemctl status nginx debería indicar que el servicio está habilitado y, si está arrancado, también activo.

NGINX como proxy inverso para una aplicación ASP.NET Core

Un caso de uso muy habitual en Linux es colocar NGINX como proxy inverso delante de una aplicación ASP.NET Core que escucha en un puerto interno, como el 5000. De esta manera, los clientes acceden a través del puerto 80 (o 443 si usas HTTPS) sin tener que saber nada del puerto real en el que está la aplicación.

Supongamos que tienes una aplicación ASP.NET Core desplegada en /var y configurada para escuchar en el puerto 5000 sin redirección a HTTPS. En este escenario, el objetivo es que los usuarios usen simplemente http://localhost o la IP del servidor sin indicar el puerto, y que la aplicación se inicie automáticamente o se recupere sola si se detiene.

La configuración típica en NGINX define un bloque server que escucha en el puerto 80 y reenvía las peticiones al backend. En su forma básica, algo como: server { listen 80; server_name _; location / { proxy_pass http://localhost:5000; proxy_http_version 1.1; proxy_set_header Upgrade $http_upgrade; proxy_set_header Connection $connection_upgrade; proxy_set_header Host $host; proxy_cache_bypass $http_upgrade; proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for; proxy_set_header X-Forwarded-Proto $scheme; } }.

Esta configuración fuerza a NGINX a recibir las peticiones en el puerto 80 y pasarlas a la aplicación en http://localhost:5000, manteniendo cabeceras importantes como Host, X-Forwarded-For o X-Forwarded-Proto, necesarias para que la app sepa la URL original del cliente y pueda registrar correctamente la IP y el protocolo utilizado.

Antes de modificar nada, conviene comprobar qué ficheros de configuración carga NGINX. El archivo principal suele ser /etc/nginx/nginx.conf, donde se incluyen otras rutas mediante directivas include. Lo habitual es que se carguen todos los ficheros .conf de /etc/nginx/conf.d y los sitios habilitados en /etc/nginx/sites-enabled.

En muchas instalaciones de Ubuntu, la configuración por defecto de servidor se encuentra en /etc/nginx/sites-enabled/default. Ahí verás una directiva server que puedes adaptar o sustituir por la configuración de proxy inverso que deseas, manteniendo el resto del fichero principal sin tocar para evitar errores globales.

Editar la configuración de NGINX y validar cambios en Linux

Para editar estos ficheros normalmente se utiliza un editor de consola como vi o vim. Por ejemplo, puedes abrir el sitio por defecto con sudo vi /etc/nginx/sites-enabled/default y sustituir el bloque server por la configuración de proxy inverso descrita anteriormente.

Dentro de vi, puedes moverte con las teclas de cursor. Para entrar en modo inserción, pulsa I o la tecla Insert y verás el indicador –INSERT– en la esquina inferior. A partir de ahí, puedes escribir, borrar o pegar contenido como en cualquier editor, incluyendo pegar directamente el bloque de configuración copiado desde otra fuente.

Para borrar líneas completas en modo normal (no inserción), sitúa el cursor al principio de la línea y escribe dd; esto la eliminará. Si quieres borrar varias de golpe, puedes usar comandos como 5dd para eliminar cinco líneas desde la actual, aunque conviene ir con cuidado para no borrar de más.

Cuando hayas acabado de editar, pulsa Esc para salir del modo inserción y escribe :wq! seguido de Enter para guardar los cambios y cerrar el editor. Si cambias de opinión y quieres salir sin guardar, puedes usar :q! en su lugar.

Antes de reiniciar NGINX es muy recomendable lanzar un sudo nginx -t. Este comando valida la sintaxis de toda la configuración y trata de abrir los ficheros referenciados, indicando si todo está correcto o señalando el fichero y la línea donde hay errores. Es la mejor forma de evitar que el servidor se quede sin arrancar por una simple coma o llave mal puesta.

Si la prueba es satisfactoria, puedes reiniciar NGINX con sudo systemctl restart nginx. Después de esto, al acceder a http://localhost deberías recibir la respuesta de tu aplicación ASP.NET Core a través de NGINX, siempre y cuando la aplicación esté en ejecución y escuchando en el puerto configurado.

Solución de problemas típicos con NGINX y ASP.NET Core

Uno de los errores más comunes cuando se trabaja con NGINX como proxy inverso es el HTTP 502 Bad Gateway. Suele aparecer cuando NGINX puede recibir la petición del cliente, pero no es capaz de conectarse al servidor backend que has definido en proxy_pass, por ejemplo porque la aplicación se ha caído o no está escuchando en el puerto esperado.

Si al hacer un curl localhost o wget localhost en la máquina del servidor ves un 502, lo primero es comprobar si realmente hay algo escuchando en el puerto configurado, en este caso el 5000. Un comando como netstat -tlp | grep 5000 mostrará si hay algún proceso atado a ese puerto o si está completamente libre.

Si no aparece nada, la causa del problema es muy clara: la aplicación ASP.NET Core no está en ejecución. Lo suyo es lanzar la app manualmente desde otra sesión de terminal para verificar que arranca y empieza a escuchar en el puerto 5000, y luego volver a probar la petición a través de NGINX para confirmar que el 502 desaparece.

En paralelo, conviene revisar los logs de NGINX. En /etc/nginx/nginx.conf verás qué rutas de log tiene configuradas, normalmente /var/log/nginx/access.log y /var/log/nginx/error.log. El de acceso te mostrará qué peticiones llegan y qué códigos HTTP está devolviendo NGINX, mientras que el de errores suele contener mensajes claros indicando que no se puede conectar con el upstream 127.0.0.1:5000 o similares.

Si en los logs ves líneas que indican que se ha intentado conectar al upstream pero no hay ningún proceso escuchando, ya tienes prácticamente diagnosticado el problema. A partir de ahí, tendrás que asegurarte de que la aplicación se arranca automáticamente al inicio (por ejemplo, configurándola también como servicio o demonio) para evitar que un reinicio del servidor o un fallo puntual obliguen a arrancarla a mano cada vez.

Para entornos de producción, lo habitual es combinar NGINX como proxy inverso con un sistema de servicios que supervise la aplicación ASP.NET Core (por ejemplo, usando systemd para la app) de forma que se reinicie automáticamente si se cae y siempre haya un backend disponible cuando NGINX reciba peticiones.

Con todo esto, NGINX se convierte en una herramienta muy completa tanto en Windows 11, macOS y Linux para servir contenido estático, actuar como proxy inverso, balancear cargas y front-endear aplicaciones de todo tipo. Conociendo sus limitaciones en Windows, sus puntos fuertes en Linux y las posibilidades de configuración flexible, tienes una base sólida para montar desde pequeños entornos de pruebas hasta arquitecturas web bastante serias.