LINUX

Cómo configurar bloques de servidor Nginx en Ubuntu 18.04

Configurar el servidor Nginx bloquea Ubuntu

Nginx Server Blocks le permite ejecutar más de un sitio web en una sola máquina. 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 paso a paso sobre cómo configurar bloques de servidor Nginx (similar a los hosts virtuales Apache) en Ubuntu 18.04.

Paso 1) Cree un usuario no root con privilegios de sudo configurados

1. Iniciar sesión como root

2. Creando un nuevo usuario

# adduser bobby

3. Concesión de privilegios administrativos

Para agregar estos privilegios a nuestro nuevo usuario, necesitamos agregar el nuevo usuario al grupo sudo. De forma predeterminada, en Ubuntu 18.04, los usuarios que pertenecen al grupo sudo pueden usar el comando sudo.

# usermod -aG sudo bobby

Paso 2) Instale Nginx y configure el firewall

Los paquetes Nginx están disponibles en los repositorios de software predeterminados de Ubuntu. La instalación es bastante sencilla, simplemente escriba los siguientes comandos:

$ sudo apt-get update
$ sudo apt-get install nginx

Una vez que se complete la instalación, verifique el estado del servicio escribiendo el siguiente comando:

$ sudo systemctl status nginx
output
   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 Wed 2018-07-25 13:14:45 UTC; 59s ago
       Docs: man:nginx(8)
    Process: 2756 ExecStart=/usr/sbin/nginx -g daemon on; master_process on; (code=exited, status=0/SU
    Process: 2747 ExecStartPre=/usr/sbin/nginx -t -q -g daemon on; master_process on; (code=exited, st
   Main PID: 2762 (nginx)
      Tasks: 2 (limit: 1112)
     CGroup: /system.slice/nginx.service
             ├─2762 nginx: master process /usr/sbin/nginx -g daemon on; master_process on;
             └─2764 nginx: worker process

Para conocer la versión de Nginx, escriba el siguiente comando:

$ sudo nginx -V
output
nginx version: nginx/1.14.0 (Ubuntu)
built with OpenSSL 1.1.0g  2 Nov 2017

Nuestro servidor Ubuntu 18.04 está protegido por un firewall, así que tendremos que abrir HTTP (80) y HTTPS (443) puertos.
De forma predeterminada, Ubuntu 18.04 viene con una herramienta de configuración de firewall llamada UFW (Cortafuegos sin complicaciones), por lo que podemos abrir los puertos necesarios con el siguiente comando:

Nota: Nginx Full: este perfil abre el puerto 80 (tráfico web normal no cifrado) y el puerto 443 (tráfico cifrado TLS / SSL)

$ sudo ufw allow 'Nginx Full'

Habilitamos el ufw:

$ sudo ufw enable

Podemos verificar el cambio con:

$ sudo ufw status
output
  Status: active

  To                         Action      From
  --                         ------      ----
  Nginx Full                 ALLOW       Anywhere
  Nginx Full (v6)            ALLOW       Anywhere (v6)

Ahora podemos abrir http: // dominio_servidor_o_IP en nuestro navegador, y deberíamos poder ver la página de destino predeterminada de Nginx como se muestra a continuación:

nginx-captura de pantalla

Paso 3) Cree la estructura del directorio

La raíz del documento es el directorio donde se almacenan los archivos del sitio web para un nombre de dominio y se sirven en respuesta a las solicitudes. Podemos establecer la raíz del documento en cualquier ubicación que queramos, pero en este artículo usaremos la siguiente estructura de directorio:

/var/www/
├── domain1.com
│   └── images
│   └── index.html
│   └── style.css
├── domain2.net
│   └── images
│   └── index.html
│   └── style.css

Básicamente crearemos un directorio separado para cada dominio que queramos alojar en nuestro servidor dentro del /var/www directorio.

Creemos el directorio raíz para nuestros dominios:

$ sudo mkdir -p /var/www/domain1.com

Con fines de prueba, crearemos un directorio de imágenes y archivos index.html, style.css dentro del directorio raíz de documentos del dominio.

$ cd /var/www/domain1.com/
/var/www/domain1.com$ sudo mkdir images index.html style.css

Abra nuestro editor y cree el archivo de demostración:

/var/www/domain1.com/index.html

<!DOCTYPE html> <html lang="en" dir="ltr">

<head> <meta charset="utf-8">

<title>Welcome to domain1.com</title> <link rel="stylesheet" href="https://linoxide.com/ubuntu-how-to/configure-nginx-server-blocks-ubuntu/style.css"/>

</head>

<body> <h1 style="color:green;text-align:center;">Success! domain1.com home page!</h1>

</body>

</html>

En este artículo, ejecutamos los comandos como sudo usuario y los archivos y directorios recién creados son propiedad del root usuario.

Para evitar problemas de permisos, podemos cambiar la propiedad del directorio raíz del documento del dominio al usuario de Nginx (www-data):

$ sudo chown -R www-data: /var/www/domain1.com

haremos los mismos trámites al domain2.net

Paso 4) Cree archivos de bloque del servidor Nginx para cada dominio

Ahora que tenemos el contenido que deseamos servir, necesitamos crear los bloques de servidor que le dirán a Nginx cómo hacer esto.

De forma predeterminada, Nginx contiene un bloque de servidor llamado dfault que podemos usar como plantilla para nuestras propias configuraciones. Comenzaremos diseñando el bloque de servidor de nuestro primer dominio, que luego copiaremos para nuestro segundo dominio y realizaremos las modificaciones necesarias.

1) Cree el primer archivo de bloque del servidor Nginx

Como se mencionó anteriormente, crearemos nuestro primer archivo de configuración de bloque de servidor copiando el archivo predeterminado:

$ sudo cp /etc/nginx/sites-available/default /etc/nginx/sites-available/domain1.com

Ahora, abra el nuevo archivo que creó en su editor de texto con privilegios de sudo:

$ sudo nano /etc/nginx/sites-available/domain1.com

Después de editar el archivo, se verá similar a esto:

/etc/nginx/sites-available/domain1.com

server { 

listen 80; 

listen [::]:80; 

root /var/www/domain1.com; 

index index.html index.htm index.nginx-debian.html; 

server_name domain1.com www.domain1.com; location / { try_files $uri $uri/ =404; 

} 
}

Eso es todo lo que necesitamos para una configuración básica. Guarde y cierre el archivo para salir Ctrl + x.

2) Cree el segundo archivo de bloque del servidor Nginx

Ahora que tenemos nuestra primera configuración de bloque de servidor nginx, podemos usarla como base para nuestro segundo archivo. Cópielo para crear un nuevo archivo:

$ sudo cp /etc/nginx/sites-available/domain1.com /etc/nginx/sites-available/domain2.net

Abra el nuevo archivo con sudo privilegios en su editor:

$ sudo nano /etc/nginx/sites-available/domain2.net

Ajuste la directiva raíz para que apunte al documento de nuestro segundo dominio root y ajustar el server_name para que coincida con el nombre de dominio de su segundo sitio (asegúrese de incluir cualquier alias).

Cuando haya terminado, nuestro archivo probablemente se verá así:

/etc/nginx/sites-available/domain2.net

server { 

listen 80; 

listen [::]:80; 

root /var/www/domain2.net; 

index index.html index.htm index.nginx-debian.html; 

server_name domain2.net www.domain2.net; location / { try_files $uri $uri/ =404; 

} 
}

Guarde y cierre el archivo para salir Ctrl + x.

Paso 5) Habilite nuestros bloques de servidor Nginx y reinicie Nginx

Ahora que tenemos los archivos de bloqueo de nuestro servidor, debemos habilitarlos. Podemos hacer esto creando enlaces simbólicos desde estos archivos al sites-enabled directorio, que Nginx lee durante el inicio.

Podemos crear estos enlaces escribiendo:

$ sudo ln -s /etc/nginx/sites-available/domain1.com /etc/nginx/sites-enabled/
$ sudo ln -s /etc/nginx/sites-available/domain2.net /etc/nginx/sites-enabled/

Estos archivos ahora están en el directorio habilitado, ahora tenemos tres bloques de servidor habilitados:

1. dominio1.com: responderá a las solicitudes de dominio1.com y www.dominio1.com
2. dominio2.net: responderá a las solicitudes de dominio2.net y www.dominio2.net
3. predeterminado: responderá a cualquier solicitud en el puerto 80 que no coincida con los otros dos bloques.

Para evitar un posible problema de memoria del cubo de hash que puede surgir al agregar nombres de servidor adicionales, seguiremos adelante y ajustaremos un solo valor dentro de nuestro archivo /etc/nginx/nginx.conf. Abra el archivo ahora:

$ sudo nano /etc/nginx/nginx.conf

Dentro del archivo, busque el server_names_hash_bucket_size directiva. Eliminar el # símbolo para descomentar la línea:

/etc/nginx/nginx.conf

http { . . . server_names_hash_bucket_size 64; . . . }

Guarde y cierre el archivo cuando haya terminado.

A continuación, pruebe para asegurarse de que no haya errores de sintaxis en ninguno de nuestros archivos Nginx:

$ sudo nginx -t

Si no se encontraron problemas, reinicie Nginx para habilitar nuestros cambios:

$ sudo systemctl restart nginx

Nginx ahora debería estar sirviendo nuestros dos nombres de dominio.

Paso 6) Vaya a nuestros sitios web

Ahora que estamos todos configurados, deberíamos probar que nuestros bloques de servidor estén funcionando correctamente. Podemos hacerlo visitando los dominios en nuestro navegador web:

http://domain1.com

Debería ver una página que se parece a esto:

dominio1

Si visita su segundo nombre de dominio, debería ver un sitio ligeramente diferente:

http://domain2.net

dominio2Leer también:

Si ambos sitios funcionan, hemos configurado con éxito dos bloques de servidor independientes con Nginx.

Publicaciones relacionadas

Deja una respuesta

Tu dirección de correo electrónico no será publicada. Los campos obligatorios están marcados con *

Botón volver arriba
Cerrar