Un servidor web es un programa que escucha pedidos por la red y devuelve archivos o respuestas. En Linux los dos más usados son Nginx y Apache; para empezar, cualquiera sirve, y Nginx es el más habitual hoy. Se instala con el gestor de paquetes, se arranca y habilita como servicio con systemctl, y por defecto ya sirve una página en el puerto 80. Para publicar tu sitio, colocás sus archivos en la carpeta que el servidor sirve y definís un bloque de servidor (en Apache, un host virtual) que dice qué dominio atiende y desde qué carpeta. Y para el HTTPS, que hoy es obligatorio, la vía es un certificado gratuito de Let’s Encrypt obtenido con Certbot, que además configura el servidor y programa la renovación automática. Todo esto va sobre la base de administración de servidores: SSH, servicios y cortafuegos.
Ver índice de contenidos
Qué hace un servidor web
La idea es más simple de lo que parece. Un navegador pide una dirección; un servidor web escucha ese pedido en un puerto —el 80 para HTTP, el 443 para HTTPS—, decide qué corresponde devolver y responde. Eso que devuelve puede ser un archivo estático —una página HTML, una imagen— o el resultado de un programa que genera la respuesta en el momento.
La distinción que ordena todo
Servir contenido estático —archivos que están tal cual en el disco— es directo y lo hace cualquier servidor web sin ayuda. Servir contenido dinámico —una respuesta que se genera con cada pedido— requiere que el servidor web pase el pedido a otro programa (un lenguaje, una aplicación) y devuelva lo que este produce. Empezar por lo estático hace que todo lo demás se entienda mejor.
Antes de seguir conviene tener la base: esta guía asume un servidor con acceso por SSH y un cortafuegos configurado, porque el servidor web abre puertos al mundo y eso hay que gestionarlo.
Nginx o Apache
Son los dos servidores web de referencia, y la elección entre ellos importa menos de lo que la gente teme al empezar. Los dos sirven sitios perfectamente.
| Nginx | Apache | |
|---|---|---|
| Carácter | Liviano y muy eficiente con muchas conexiones | Flexible, con configuración por carpeta |
| Configuración | Centralizada, en bloques de servidor | Por host virtual y archivos por directorio |
| Uso típico | Sitios modernos, intermediario delante de apps | Ampliamente compatible, mucho software lo asume |
| Para empezar | La opción más habitual hoy | Igual de válida, muy documentada |
Recomendación práctica: si no tenés un motivo concreto para lo contrario, Nginx. Es lo más común hoy, su configuración es fácil de leer, y lo que aprendas se aplica al caso más frecuente. Los ejemplos de esta guía lo usan, pero el flujo es idéntico con Apache cambiando los nombres.
Instalar y servir un sitio
# Instalar Nginx desde el gestor de paquetes.
sudo apt update
sudo apt install nginx
# Arrancarlo y habilitarlo para que vuelva tras cada reinicio.
sudo systemctl enable --now nginx
# Permitirlo en el cortafuegos (abre 80 y 443).
sudo ufw allow 'Nginx Full'
# Comprobar que responde. Debería mostrar la página por defecto.
curl http://localhostEn este punto, si visitás la dirección del servidor en un navegador, ya ves la página de bienvenida de Nginx. Publicar tu sitio es reemplazar esa página por tus archivos:
# La carpeta que Nginx sirve por defecto en Ubuntu.
# Colocá ahí tu index.html y los archivos del sitio.
# /var/www/html/
# Tras cambiar la configuración, SIEMPRE comprobar y recargar:
sudo nginx -t # comprueba que la configuración es válida
sudo systemctl reload nginx # aplica sin cortar las conexionesAntes de recargar, siempre nginx -t. Comprueba que la configuración no tiene errores antes de aplicarla. Recargar una configuración rota puede dejar el servidor sin responder, y nginx -t lo evita en un segundo. Es la costumbre que más disgustos ahorra en producción.
Los bloques de servidor
Un mismo servidor puede alojar varios sitios con distintos dominios. Cada uno se define en un bloque de servidor (en Apache se llama host virtual), que dice qué dominio atiende y desde qué carpeta lo sirve.
# Un bloque de servidor mínimo para un sitio.
server {
listen 80;
server_name ejemplo-propio.org www.ejemplo-propio.org;
root /var/www/ejemplo-propio;
index index.html;
location / {
try_files $uri $uri/ =404;
}
}Leído en voz alta, dice: «escuchá en el puerto 80; si el pedido es para este dominio, servilo desde esta carpeta; y ante cada dirección, buscá el archivo correspondiente o devolvé un error 404 si no está». Con esa estructura entendida, alojar un segundo sitio es agregar otro bloque con otro dominio y otra carpeta.
La organización habitual en Ubuntu es escribir cada bloque en un archivo dentro de /etc/nginx/sites-available/ y activarlo con un enlace en sites-enabled/, lo que permite tener sitios preparados y encenderlos o apagarlos sin borrar su configuración.
Activar HTTPS
Servir un sitio sin cifrar hoy no es una opción: los navegadores lo marcan como no seguro. La buena noticia es que activar HTTPS pasó de ser caro y manual a ser gratuito y automático.
- Requisito previo: un dominio que apunte al servidorUn registro DNS que resuelva tu nombre a la dirección de la máquina. Sin eso, la autoridad de certificación no puede comprobar que el dominio es tuyo.
- Instalar CertbotLa herramienta que obtiene y configura el certificado.
- EjecutarloCertbot verifica el dominio con Let’s Encrypt, obtiene el certificado, reconfigura el servidor para HTTPS y añade la redirección de HTTP a HTTPS.
# Instalar Certbot con el complemento para Nginx.
sudo apt install certbot python3-certbot-nginx
# Obtener el certificado y configurar Nginx automáticamente.
sudo certbot --nginx -d ejemplo-propio.org -d www.ejemplo-propio.org
# Comprobar que la renovación automática está programada y funciona.
sudo certbot renew --dry-runEl detalle de qué protege exactamente ese certificado, la diferencia entre SSL y TLS y por qué la vigencia se acorta está en SSL, TLS y HTTPS. Lo esencial acá: los certificados de Let’s Encrypt duran poco a propósito, y por eso la renovación automática que programa Certbot no es un lujo sino lo que evita que el sitio se caiga cuando el certificado caduque.
Buenas prácticas
Un servidor web bien puesto es más que uno que responde. Lo mínimo:
- Solo los puertos necesarios. El 80 y el 443 abiertos, el resto cerrado en el cortafuegos.
- HTTPS obligatorio. Con la redirección de HTTP a HTTPS que configura Certbot, para que nadie navegue sin cifrar.
- El servidor web con su propio usuario sin privilegios. Como cualquier servicio: si es vulnerado, que no entregue el sistema entero.
- No revelar de más. Ocultar la versión exacta del servidor reduce la información que se da a quien busca objetivos.
- Actualizaciones al día. El servidor web es software expuesto a internet: es de lo primero que hay que mantener parcheado.
Errores frecuentes
- Recargar sin comprobar con
nginx -t. Una configuración rota deja el servidor sin responder. - Intentar HTTPS sin un dominio que apunte al servidor. La verificación del certificado necesita ese DNS resuelto.
- Configurar el certificado a mano sin renovación. Los de Let’s Encrypt caducan pronto; sin renovación automática, el sitio se cae.
- Dejar el puerto 80 sin redirigir a HTTPS. Permite navegar sin cifrar aunque el HTTPS exista.
- Servir todo como administrador. El servidor web corre con su propio usuario sin privilegios.
- No permitir el servicio en el cortafuegos. El sitio no responde desde afuera y cuesta darse cuenta de por qué.
- Olvidar actualizar el servidor web. Es software expuesto: acumula vulnerabilidades si no se parchea.
Preguntas frecuentes
¿Nginx o Apache: cuál elijo?
Para empezar, cualquiera de los dos sirve un sitio sin problemas, así que no es una decisión que valga la pena agonizar. Nginx es hoy la opción más común: es liviano, muy eficiente cuando hay muchas conexiones simultáneas, y su configuración centralizada en bloques de servidor es fácil de leer. Apache es igual de válido, extremadamente documentado y asumido por mucho software, con la particularidad de permitir configuración por carpeta. Si no tenés un requisito concreto que incline la balanza, Nginx es una elección segura y lo que aprendas se aplica al caso más frecuente. El flujo de trabajo, en cualquier caso, es casi idéntico entre los dos.
¿Qué es un bloque de servidor o host virtual?
Es la porción de configuración que le dice al servidor web cómo atender un sitio concreto: qué dominio escucha, desde qué carpeta sirve los archivos y qué reglas aplica. Se llama bloque de servidor en Nginx y host virtual en Apache, pero la idea es la misma. Su utilidad principal es que un solo servidor puede alojar varios sitios con dominios distintos, cada uno con su propio bloque apuntando a su propia carpeta, y el servidor decide cuál corresponde según el dominio que pidió el navegador. Agregar un sitio nuevo es, básicamente, escribir otro bloque con otro dominio y otra carpeta, sin tocar los que ya funcionan.
¿Cómo activo HTTPS gratis?
Con un certificado de Let's Encrypt, una autoridad de certificación gratuita y automatizada, obtenido mediante la herramienta Certbot. El requisito previo es tener un dominio que apunte al servidor, porque el certificado se emite solo tras comprobar que controlás ese dominio. Con eso listo, se instala Certbot, se ejecuta indicándole el dominio, y la herramienta se encarga de todo: verifica el control, obtiene el certificado, reconfigura el servidor web para servir por HTTPS y añade la redirección de HTTP a HTTPS. Lo más importante es que también programa la renovación automática, porque estos certificados duran poco tiempo a propósito y renovarlos a mano sería un olvido garantizado.
¿Por qué comprobar la configuración antes de recargar?
Porque recargar una configuración con errores puede dejar el servidor web sin responder, y en un sitio en producción eso significa una caída. El comando de comprobación revisa que toda la configuración sea válida sin aplicarla, así que si hay un error tipográfico o una directiva mal escrita te avisa antes de que cause daño. La costumbre correcta es siempre la misma secuencia: editar la configuración, comprobarla, y solo si la comprobación pasa, recargar. Además conviene usar la recarga en lugar del reinicio completo cuando sea posible, porque la recarga aplica los cambios sin cortar las conexiones que ya están en curso.
¿Puedo alojar varios sitios en un solo servidor?
Sí, y es de lo más común. Cada sitio se define en su propio bloque de servidor con su dominio y su carpeta, y el servidor web decide cuál atender según el dominio que llega en cada pedido. Así, una sola máquina puede servir varios dominios completamente distintos sin interferencia entre ellos. El límite práctico no lo pone el servidor web sino los recursos de la máquina —memoria, procesador, ancho de banda— y la cantidad de tráfico de cada sitio. Cada uno puede tener además su propio certificado HTTPS, que Certbot gestiona por separado. Es la base de cómo funcionan los alojamientos que hospedan muchos sitios en la misma infraestructura.
¿Cómo sirvo contenido dinámico y no solo archivos?
El servidor web por sí solo entrega archivos estáticos de forma directa. Para contenido dinámico —una respuesta que se genera con cada pedido, como la de una aplicación— el servidor web no ejecuta el programa: le pasa el pedido y devuelve lo que ese programa produce. En la práctica eso significa instalar el lenguaje o el entorno de la aplicación y configurar el servidor web para que dirija hacia él los pedidos que correspondan, dejando que siga sirviendo directamente los archivos estáticos como imágenes y hojas de estilo. La configuración concreta depende de la tecnología de la aplicación, pero el patrón es siempre el mismo: el servidor web adelante, la aplicación detrás.
Fuentes
Documentación oficial y material de la comunidad consultados para esta guía. Fecha de consulta: 28 de julio de 2026.
Aportes de la comunidad Underc0de
- Underc0de, foro. Sección GNU/Linux. Consultas de la comunidad sobre montar servicios y publicar sitios en un servidor propio.
- Underc0de, foro. Sección Desarrollo web. El otro lado del servidor: qué se publica en él.
Documentación oficial
- nginx. nginx documentation. La referencia oficial del servidor web citado en los ejemplos.
- Apache. Apache HTTP Server Documentation. La documentación del otro servidor web de referencia.
- EFF. Certbot. La herramienta que obtiene y renueva certificados automáticamente.
- Let’s Encrypt. How It Works. La autoridad de certificación gratuita y automatizada.
- Canonical. Ubuntu Server documentation. Guía de administración del servidor sobre el que se monta todo esto.