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.
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.comCon 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.
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.