Gestion de dominios con nginx

Ahora que ya hemos montado nuestro blog bajo Ghost utilizando nginx, no está de más que aprendamos un poco de su configuración, ya que más adelante la usaremos para aprender a manejar subdominios.

La configuración de nginx se hace mediante 2 métodos, el nginx.conf y los sites-enabled, y voy a intentar ilustrar la diferencia entre ambos, y qué hacer en cada uno.

El nginx.conf

Este archivo se encuentra ubicado en /etc/nginx/, y es un archivo algo delicadillo, por lo que es recomendable que tengáis una copia de seguridad medianamente actualizada.
Una forma rápida de hacerla una vez que veáis que un cambio que habéis hecho os funciona bien, es mediante el comando:
cp /etc/nginx/nginx.conf /etc/nginx/nginx.conf.bak
el cual os creará una copia del archivo llamada nginx.conf.bak, la cual podréis restaurar en cualquier momento con el comando
cp /etc/nginx/nginx.conf.bak /etc/nginx/nginx.conf

Una vez nos hayamos curado en salud, entramos en la explicación.

Realmente en este archivo se puede configurar todo, pero por comodidad, vamos a explicar la forma más fácil de manejar las peticiones.
En el archivo nginx.conf nos encargaremos de declarar todas las configuraciones globales del servidor, tales como los servicios para el manejo de archivos .php (tambien conocidos como "upstream", de los cuales hablaremos en futuros posts), comunicación con ghost (como vimos en el post anterior)...

Es decir, desde aquí configuraremos toda la parte no relacionada directamente con los dominios (aunque repito, se podría).

Este archivo generalmente no será necesario tocarlo demasiado a menudo.

Los sites

Aquí si que llegamos a los archivos que realmente utilizaremos más (como ya veremos en posteriores posts).

En /etc/nginx/ hay una carpeta llamada sites-available.
En ella tendremos que ir creando archivos mediante los cuales configuraremos nuestros dominios y subdominios.

Dichos archivos tendrán la siguiente forma:

server{

	listen 80;
	server_name www.dominio.com dominio.com;

	#En caso de que querais que tanto www.dominio.com
    #como dominio.com apunten al mismo sitio

	#Por cierto, las lineas escritas con una
    #almohadilla delante, son comentarios,
    #es decir, no son interpretadas
    
    
    root /carpetadelserver/dondeiran/losarchivos;
    
    index index.html index.php;
    #Archivos que actuaran como index
}

Para crearlo, no tenemos mas que usar el comando vim /etc/nginx/sites-available/nombrequequeramos
donde "nombrequequeramos" debería ser un nombre descriptivo (como por ejemplo, el dominio. Ej: dexadev).

Una vez creado el archivo, no tenemos más que hacer un symlink del archivo a sites-enabled. Para ello utilizaremos el comando

ln -s /etc/nginx/sites-available/archivo /etc/nginx/sites-enabled/archivo

Y cuando tengamos el symlink hecho,
services nginx restart
para que nginx detecte los cambios.

El manejo utilizando symlinks se hace para poder configurar los archivos tranquilamente, y poder habilitarlos/deshabilitarlos de forma muy cómoda (si quisieramos deshabilitarlo, no tendríamos más que eliminar el symlink, sin tener que borrar el archivo, el cual podría volver a ser habilitado posteriormente).
Para borrar el symlink:
rm /etc/nginx/sites-enabled/archivo

Y hasta aquí este pequeño post teórico.
Como podéis ver es bastante sencillo y lógico, y con este esquema es mucho más cómoda la administración de sitios que si lo hicieramos directamente sobre el nginx.conf, permitiéndonos además su des/habilitación a voluntad.

Ahora, como curiosidad bonus, fijáos en las últimas líneas del nginx.conf:
include /etc/nginx/sites-enabled/*
Esa instrucción lo que le está diciendo a nginx es que, además de las configuraciones declaradas específicamente en el nginx.conf, coja las declaradas en sites-enabled, que si habéis comprendido el flujo de este post, serán los archivos que hemos creado en sites-available.

Espero que haya resultado un post comprensible para todo el mundo y que, una vez practicado un par de veces, entendáis como se configuran los dominios con nginx.