Introducción
Nginx Server Blocks le permite ejecutar más de un sitio web en una sola computadora. Con Server Blocks, puede especificar la raíz del documento del sitio (el directorio que contiene los archivos del sitio web), crear una política de seguridad separada para cada sitio, usar diferentes certificados SSL para cada sitio y mucho más.
En este artículo, proporcionaremos instrucciones detalladas sobre cómo configurar un bloque de servidor Nginx en Ubuntu 20.04 LTS Focal Fossa.
Para obtener una guía sobre cómo configurar varios bloques de servidor con Nginx en Ubuntu 20.04, lea este tutorial.
Prerrequisitos
Asegúrese de haber cumplido los siguientes requisitos previos antes de continuar con el tutorial:
- Tienes un nombre de dominio que apunta a la IP de tu servidor público. En este tutorial usaremos
example.com
. - Ha iniciado sesión como usuario con privilegios de sudo.
Si desea instalar Nginx en un servidor remoto, continúe leyendo; de lo contrario, omita el primer párrafo "Conexión al servidor" y lea el siguiente.
Conexión al servidor
Para acceder al servidor, necesita conocer la dirección IP. También necesitará su nombre de usuario y contraseña para la autenticación. Para conectarse al servidor como root, escriba el siguiente comando:
ssh root@IP_DEL_SERVER
A continuación, deberá ingresar la contraseña del usuario root.
Si no está utilizando el usuario root, puede iniciar sesión con otro nombre de usuario utilizando el mismo comando, luego cambie root a su nombre de usuario:
ssh nome_utente@IP_DEL_SERVER
Luego se le pedirá que ingrese su contraseña de usuario.
El puerto estándar para conectarse a través de ssh es 22, si su servidor usa un puerto diferente, deberá especificarlo usando el parámetro -p, luego escriba el siguiente comando:
ssh nome_utente@IP_DEL_SERVER -p PORTA
Instalar Nginx
El paquete Nginx se incluye en los repositorios predeterminados de Ubuntu 18.04.
sudo apt update
sudo apt install nginx
El servicio Nginx se iniciará automáticamente al final del proceso de instalación. Para verificar el estado, escriba:
sudo systemctl status nginx
La salida se verá así:
● nginx.service - A high performance web server and a reverse proxy server
Loaded: loaded (/lib/systemd/system/nginx.service; enabled; vendor preset: enabled)
Active: active (running) since Mon 2020-05-04 23:59:35 CEST; 9s ago
Docs: man:nginx(8)
Main PID: 67793 (nginx)
Tasks: 2 (limit: 2286)
Memory: 4.1M
CGroup: /system.slice/nginx.service
├─67793 nginx: master process /usr/sbin/nginx -g daemon on; master_process on;
└─67794 nginx: worker process
Configurar el cortafuegos
Suponiendo que está utilizando UFW
para administrar su firewall, debe abrir los 80
) y HTTPS ( 443
). Puede hacer esto habilitando el perfil 'Nginx Full' que incluye reglas para ambos puertos:
sudo ufw allow 'Nginx Full'
Para verificar el tipo de estado de Nginx:
sudo ufw status
La salida se verá así:
Status: active
To Action From
-- ------ ----
22/tcp ALLOW Anywhere
Nginx Full ALLOW Anywhere
22/tcp (v6) ALLOW Anywhere (v6)
Nginx Full (v6) ALLOW Anywhere (v6)
Cree la estructura de directorio para el bloque de servidor
La raíz del documento es el directorio donde se almacenan los archivos del sitio web para un nombre de dominio y se ofrecen en respuesta a las solicitudes. Puede establecer la raíz del documento en cualquier ubicación que desee.
Usaremos la siguiente estructura de directorios:
/var/www/├── domain1.com
│ └── public_html
├── domain2.com
│ └── public_html
├── domain3.com
│ └── public_html
Básicamente, crearemos un directorio separado para cada dominio que queramos alojar en nuestro servidor dentro del /var/www
. Dentro de cada uno de estos directorios, crearemos un public_html
que almacenará los archivos del sitio web del dominio.
Creemos el directorio raíz para nuestro dominio example.com
:
sudo mkdir -p /var/www/example.com/public_html
Con fines de prueba, crearemos un index.html
dentro del directorio raíz del documento del dominio.
Abra el archivo /cree el archivo con su editor, en este tutorial usaremos nano:
sudo nano /var/www/example.com/public_html/index.html
Pegue las siguientes líneas de código:
<!DOCTYPE html>
<html lang="en" dir="ltr">
<head>
<meta charset="utf-8">
<title>Welcome to example.com</title>
</head>
<body>
<h1>Success! example.com home page!</h1>
</body>
</html>
En este ejemplo, ejecutamos los comandos como el usuario sudo y los archivos y directorios recién creados son propiedad del usuario root.
Para evitar problemas de autorización, cambie la propiedad del directorio raíz del documento del dominio al usuario Nginx ( www-data
) con el comando chown:
sudo chown -R www-data: /var/www/example.com
Crea un bloque de servidor
De forma predeterminada en los sistemas Ubuntu, los archivos de configuración del bloque del servidor Nginx se almacenan en el /etc/nginx/sites-available
, que se habilitan mediante enlaces simbólicos al /etc/nginx/sites-enabled/
.
Abra su editor y cree el siguiente archivo de bloqueo del servidor:
sudo nano /etc/nginx/sites-available/example.com
server {
listen 80;
listen [::]:80;
root /var/www/example.com/public_html;
index index.html;
server_name example.com www.example.com;
access_log /var/log/nginx/example.com.access.log;
error_log /var/log/nginx/example.com.error.log;
location /{
try_files $uri $uri/=404;
}
}
Puede nombrar el archivo de configuración como desee, pero generalmente es mejor usar el nombre de dominio.
Para habilitar el nuevo archivo de bloqueo del servidor, cree un enlace simbólico desde el archivo al sites-enabled
para sitios, que Nginx lee al inicio:
sudo ln -s /etc/nginx/sites-available/example.com /etc/nginx/sites-enabled/
Pruebe la configuración de Nginx para obtener la sintaxis correcta:
sudo nginx -t
Si no hay errores, la salida se verá así:
nginx: the configuration file /etc/nginx/nginx.conf syntax is ok
nginx: configuration file /etc/nginx/nginx.conf test is successful
Reinicie el servicio Nginx para que los cambios surtan efecto:
sudo systemctl restart nginx
Finalmente, para verificar que el bloque del servidor funciona como se esperaba, abre tu http://example.com
en el navegador de tu elección y verás el mensaje de ejemplo que creamos en el archivo index.html de nuestro Bloque del Servidor Nginx.
Conclusión
Aprendió a crear una configuración de bloque de servidor Nginx para alojar un dominio en un solo servidor Ubuntu. Puede repetir los pasos anteriores y crear bloques de servidor adicionales para todos sus dominios.