NGINX es un servidor web de alto rendimiento utilizado en particular para administrar archivos estáticos y como proxy inverso. Gracias a su versatilidad, NGINX se puede utilizar en cualquier situación. En esta guía verás cómo instalarlo en tu servidor y cómo configurarlo para dos o más dominios.
Primero, conéctese a su servidor a través de una conexión SSH. Si aún no lo ha hecho, se recomienda seguir nuestra guía para conectarse de forma segura con SSH. En caso de un servidor local, vaya al siguiente punto y abra la terminal de su servidor.
Instalación de NGINX
Actualice los repositorios de distribución para asegurarse de descargar la última versión de NGINX:
$ sudo apt update
Ejecute el siguiente comando para instalar el paquete NGINX:
$ sudo apt install nginx
Una vez completada la instalación, inicie el servicio e instálelo en el sistema:
$ sudo systemctl start nginx
$ sudo systemctl enable nginx
Configuración del cortafuegos
En caso de que haya un firewall en su sistema, configúrelo para habilitar el tráfico HTTP y el tráfico HTTPS a su máquina.
Al usar el firewall UFW, se proporcionan perfiles preinstalados para NGINX. Así que veamos cómo habilitarlos.
Para verificar los perfiles disponibles instalados en el firewall UFW, ejecute este comando:
$ sudo ufw app list
Se mostrará una lista similar a la siguiente en la pantalla:
Available applications:
Dovecot IMAP
Dovecot POP3
Dovecot Secure IMAP
Dovecot Secure POP3
Nginx Full
Nginx HTTP
Nginx HTTPS
OpenSSH
Postfix
Postfix SMTPS
Postfix Submission
Para permitir el tráfico HTTP (Puerto 80) y HTTPS (Puerto 443), use el perfil "Nginx Full".
Verifique la información de su perfil como se muestra a continuación:
$ sudo ufw app info "Nginx Full"
Aparecerá la descripción del perfil en pantalla:
Profile: Nginx Full
Title: Web Server (Nginx, HTTP + HTTPS)
Description: Small, but very powerful and efficient web server
Ports:
80,443/tcp
Después de verificar el perfil, estará listo para habilitarlo:
$ sudo ufw allow in "Nginx Full"
En este punto, se completa la configuración de NGINX y el firewall. Pruebe el servidor web visitando la dirección http://
Configurar dos dominios/sitios web correctamente:
A continuación se muestra cómo configurar dos hosts virtuales (llamados "bloques de servidor") para tener dos espacios web completamente separados. En este ejemplo, utilizaremos dos dominios ficticios:
www.sudominio.com
www.sudominio2.com
Ambos registros A deben apuntar a la dirección IP pública de su servidor.
Empiece por crear todas las carpetas necesarias para almacenar los archivos públicos de sus sitios web:
$ sudo mkdir /var/www
$ sudo mkdir /var/www/yourdomain.com
$ sudo mkdir /var/www/yourdomain.com/htdocs
$ sudo mkdir /var/www/yourdomain.com/logs
$ sudo mkdir /var/www/yourdomain2.com
$ sudo mkdir /var/www/yourdomain2.com/htdocs
$ sudo mkdir /var/www/yourdomain2.com/logs
Como contenido temporal, copie la página NGINX predeterminada a las carpetas htdocs de cada dominio:
$ sudo cp /usr/share/nginx/html/* /var/www/yourdomain.com/htdocs/
$ sudo cp /usr/share/nginx/html/* /var/www/yourdomain2.com/htdocs/
Ahora, continúe con la configuración real de NGINX. NGINX generalmente lee todos los archivos .conf en el directorio /etc/nginx/conf.d/, continúe creando dos archivos (uno por dominio), nombrándolos:
sudominio_com.conf
sudominio2_com.conf
Utilice su editor de texto favorito para escribir la siguiente configuración en el archivo yourdomain_com.conf:
server {
listen 80;
server_name yourdomain.com *.yourdomain.com;
root /var/www/yourdomain.com/htdocs;
access_log /var/www/yourdomain.com/logs/access.log main;
error_log /var/www/yourdomain.com/logs/error.log warn;
}
Obviamente también debe usar una configuración similar para sudominio2_com.conf:
server {
listen 80;
server_name yourdomain2.com *.yourdomain2.com;
root /var/www/yourdomain2.com/htdocs;
access_log /var/www/yourdomain2.com/logs/access.log main;
error_log /var/www/yourdomain2.com/logs/error.log warn;
}
Además de la configuración de la carpeta raíz para los archivos del dominio virtual, también hay configuraciones para configurar las rutas de los archivos de registro (tanto de acceso como de error) para tener un registro por dominio. Normalmente, NGINX guarda todos los registros en el directorio /var/log/nginx/ pero en el caso de un dominio múltiple, el resultado puede ser confuso.
Los registros pueden volverse demasiado grandes con el tiempo si se cambia su ruta. Por lo tanto, es necesario establecer una rotación de los archivos para eliminar los contenidos más antiguos. Para hacerlo, utilice el software logrotate.
Para agregar nuevos archivos de registro en la configuración de logrotate, edite el archivo /etc/etc/logrotate.d/nginx:
/var/log/nginx/*log {
create 0644 nginx nginx
daily
rotate 10
missingok
notifempty
compress
sharedscripts
postrotate
/bin/kill -USR1 `cat /run/nginx.pid 2>/dev/null` 2>/dev/null || true
endscript
}
Como puede ver, ya existe una configuración para los archivos NGINX en /var /log/nginx. Proceda modificando la primera parte del archivo de la siguiente manera:
/var/log/nginx/*log
/var/www/*/logs/* {
...
}
Una vez realizado este cambio, logrotate administrará todos los archivos en las carpetas de registros de /var/www/mydomain.it y /var/www/yourdomain.com (y cualquier otro), sin tener que preocuparse por cualquier otro dominio que pueda agregarse en el futuro.
Una vez completado, reinicie el servicio para aplicar los cambios:
$ sudo systemctl reload nginx