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-enabledLos 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_nameLleva el dominio, en caso de no tener uno aún, usen la IP del servidor.rootEspecifica la ruta del servidor donde se encuentran los archivos del sitio. Es decir que en/srv/http/existe una carpeta de nombremisitioque contiene mis archivos dehtml,php,cssy demás. Usen siempre carpeta por sitio, así solo sea uno.includeIncluye archivos/ módulos adicionales para ese sitio que Nginx deberá tener en cuenta. Para este caso agregamos el módulo para ejecutarphpy algunas excepciones para el servidor endrop.confque antes habíamos definido.
El sitio está añadido, habilitémoslo entonces:
cd /etc/nginx/sites-enabled/
ln -s ../sites-available/misitio.conf misitio.confSi, 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.