Servidor · nginx

Servir tu sitio estático con nginx

Servir un sitio estático con nginx es decirle dos cosas: por dónde escuchar y dónde están tus archivos. Eso se escribe en un server { … } —el "server block"— y con el DNS apuntando a tu IP, el sitio queda en línea.

Gratis y open source macOS · Linux · Windows Nada sale de tu equipo

1. Instala nginx

Se instala una sola vez y queda para siempre. Es gratis y de código abierto:

# Ubuntu / Debian (tu servidor)
sudo apt install nginx

# macOS (pruebas locales)
brew install nginx

Si nunca has usado la terminal, empieza por la guía de la terminal.

2. Crea el server block

Sube los archivos de tu sitio a /var/www/tusitio.com/ y crea su archivo de configuración:

sudo nano /etc/nginx/sites-available/tusitio.com

Con este contenido mínimo. Le dice a nginx que escuche en el puerto 80, para qué dominio, y desde qué carpeta servir:

server {
    listen 80;
    server_name tusitio.com www.tusitio.com;
    root /var/www/tusitio.com;
    index index.html;
}

Actívalo con una liga simbólica hacia sites-enabled, valida y recarga:

sudo ln -s /etc/nginx/sites-available/tusitio.com /etc/nginx/sites-enabled/
sudo nginx -t && sudo systemctl reload nginx

Apunta el dominio a tu servidor

nginx ya sirve los archivos, pero el dominio todavía no sabe dónde está el servidor. En tu proveedor de DNS crea un registro A de tusitio.com apuntando a la IP del servidor. Cuando ese cambio se propague —de minutos a un par de horas— escribir el dominio en el navegador llegará a tu nginx.

El patrón de dos carpetas: sites-available guarda todas las configuraciones que tienes escritas; sites-enabled guarda solo las que están activas, como ligas. Así enciendes y apagas sitios sin borrar nada.

Tareas relacionadas

Preguntas frecuentes

¿Por qué sale 403 Forbidden en vez de mi página?

Casi siempre es uno de dos motivos: no existe un index.html dentro de la carpeta root, o el usuario de nginx no tiene permiso de leer esos archivos. Verifica que el archivo se llame exactamente index.html y que la ruta de root coincida con donde subiste el sitio.

¿Puedo servir varios sitios desde un mismo servidor?

Sí, y es lo normal. Crea un archivo en sites-available por cada dominio, cada uno con su server_name y su root, y enlázalos en sites-enabled. nginx decide a cuál entregar la petición según el dominio que pidió el visitante.