Continuando, y ahora que tenemos nuestra configuración global para Nginx, veremos cómo administrar nuestros sitios.
Primero creamos dos carpetas sobre el directorio de configuración de Nginx
cd /etc/nginx/
mkdir -p sites-available
mkdir -p sites-enabled
Los nombres de las carpetas describen su funcionalidad. Esto es importante: Crearemos un archivo misitio.conf
en sites-available
por cada sitio que queramos en nuestro servidor.
En algunas distribuciones, como Ubuntu, viene un archivo predefinido llamado default. Recomiendo borrarlo y utilizar
misitio.conf
De este modo, cada archivo .conf
describirá configuraciones específicas para cada sitio, por ejemplo incluir o no php
o servir como un frontend proxy para usar node
, django
ó demás. Nginx es supremamente flexible.
Así, un sitio típico con php para Nginx sería: /etc/nginx/sites-available/misitio.conf
server {
listen 80;
server_name misitio.com;
root /srv/http/misitio;
index index.php index.html index.htm;
# limit_conn limit_per_ip 16; ssi on;
#location / {
# Enables directory listings when index file not found
# autoindex on; Shows file listing times as local time autoindex_localtime on; Enable for vBulletin usage WITHOUT
# vbSEO installed try_files $uri $uri/ /index.php; root /usr/share/nginx/html; index index.html index.htm;
#}
location / {
root /srv/http/misitio;
try_files $uri $uri/ /index.php?$args;
}
include /etc/nginx/global/php.conf;
include /etc/nginx/global/drop.conf;
}
Aclaremos unas cosas:
server_name
Lleva el dominio, en caso de no tener uno aún, usen la IP del servidor.root
Especifica la ruta del servidor donde se encuentran los archivos del sitio. Es decir que en/srv/http/
existe una carpeta de nombremisitio
que contiene mis archivos dehtml
,php
,css
y demás. Usen siempre carpeta por sitio, así solo sea uno.include
Incluye archivos/ módulos adicionales para ese sitio que Nginx deberá tener en cuenta. Para este caso agregamos el módulo para ejecutarphp
y algunas excepciones para el servidor endrop.conf
que antes habíamos definido.
El sitio está añadido, habilitémoslo entonces:
cd /etc/nginx/sites-enabled/
ln -s ../sites-available/misitio.conf misitio.conf
Si, sólo creamos un enlace simbólico a la configuración del sitio que queremos habilitar. Así no perdemos archivos de configuración cuando queramos dar sitios de baja.
Y sólo por confirmar, definamos permisos sobre la carpeta de nuestro sitio
# chown -hR http:http /srv/http/
Recuerden cambiar el usuario http
por el usuario correcto, por ejemplo en ubuntu debería ser www-data
; Así mismo la ruta de archivos públicos, que en Ubuntu sería /home/www/public/misitio/
Nuestra configuración esta lista. Verificamos que todo este bien ejecutando nginx -t
y reiniciamos el servicio de Nginx con sudo systemctl nginx restart
. No debería aparecer algún error, y nuestro sitio debería ser visible desde el dominio especificado en server_name
.