Introducción

Nginx es uno de los servidores web más populares del mundo y aloja algunos de los sitios más grandes y con mayor tráfico en Internet. Es más fácil de utilizar que Apache en la mayoría de los casos y puede emplearse como servidor web o proxy inverso.

En esta guía, le explicaremos el procedimiento para instalar Nginx en su servidor de Ubuntu 20.04. Para acceder a una versión más detallada de este tutorial, consulte Cómo instalar Nginx en Ubuntu 20.04.

Paso 1: Instalar Nginx

nginx illustration for: Paso 1: Instalar Nginx

Debido aq ue Nginx está disponible en los repositorios predeterminados de Ubuntu, puede instalarlo utilizando el sistema de paquetes apt.

Actualice su índice local de paquetes:

				
					
sudo apt update

				
			

Instale Nginx:

				
					
sudo apt install nginx

				
			

Paso 2: Ajustar el firewall

Si siguió el tutorial de configuración del servidor de los requisitos previos, tendrá habilitado el firewall UFW. Compruebe los perfiles de aplicaciones ufw disponibles con el siguiente comando:

				
					
sudo ufw app list

				
			
				
					
[secondary_label Output]

Available applications:

  Nginx Full

  Nginx HTTP

  Nginx HTTPS

  OpenSSH

				
			

Habilitaremos el perfil más restrictivo, el cual de todas formas permitirá el tráfico que configuró y con ello el tráfico en el puerto 80:

				
					
sudo ufw allow 'Nginx HTTP'

				
			

Verifique el cambio:

				
					
sudo ufw status

				
			
				
					
[secondary_label Output]

Status: active



To                         Action      From

--                         ------      ----

OpenSSH                    ALLOW       Anywhere                  

Nginx HTTP                 ALLOW       Anywhere                  

OpenSSH (v6)               ALLOW       Anywhere (v6)             

Nginx HTTP (v6)            ALLOW       Anywhere (v6)

				
			

Paso 3: Comprobar su servidor web

Realice una verificación con el sistema init systemd para saber si se encuentra en ejecución el servicio escribiendo lo siguiente:

				
					
systemctl status nginx

				
			
				
					
[secondary_label Output]

nginx.service - A high performance web server and a reverse proxy server

     Loaded: loaded (/lib/systemd/system/nginx.service; enabled; vendor preset:>

     Active: active (running) since Mon 2020-05-04 22:45:26 UTC; 1min 17s ago

       Docs: man:nginx(8)

   Main PID: 13255 (nginx)

      Tasks: 2 (limit: 1137)

     Memory: 4.6M

     CGroup: /system.slice/nginx.service

             ├─13255 nginx: master process /usr/sbin/nginx -g daemon on; master>

             └─13256 nginx: worker process

				
			

A través su dirección IP, acceda a la página de destino predeterminada de Nginx para confirmar que el software funcione de forma correcta:

				
					
http://<^>your_server_ip<^>

				
			

Debería obtener como resultado la página de inicio predeterminada de Nginx:

Paso 4: Configurar bloques de servidor (recomendable)

Al emplear el servidor web Nginx, se pueden utilizar _bloques de servidor_ (similares a hosts virtuales de Apache) para encapsular los detalles de la configuración y alojar más de un dominio desde un único servidor. Configuraremos un dominio llamado your_domain, pero debería cambiarlo por su propio nombre de dominio. Para obtener más información sobre cómo configurar un nombre de dominio con the cloud provider, consulte nuestra Introducción al DNS de the cloud provider.

Cree el directorio para <<^>your_domain<^> y utilice el indicador -p para crear cualquier directorio principal necesario:

				
					
sudo mkdir -p /var/www/&lt;^&gt;your_domain&lt;^&gt;/html

				
			

Asigne la propiedad del directorio:

				
					
sudo chown -R $USER:$USER /var/www/&lt;^&gt;your_domain&lt;^&gt;/html

				
			

Los permisos de sus root web deberían ser correctos si no modificó su valor umask, pero puede comprobarlo escribiendo lo siguiente:

				
					
sudo chmod -R 755 /var/www/&lt;^&gt;your_domain&lt;^&gt;

				
			

Cree una página de ejemplo index.html utilizando nano o su editor favorito:

				
					
nano /var/www/&lt;^&gt;your_domain&lt;^&gt;/html/index.html

				
			

Dentro de ella, agregue el siguiente ejemplo de HTML:

				
					
[label /var/www/your_domain/html/index.html]

&lt;html&gt;

    &lt;head&gt;

        &lt;title&gt;Welcome to &lt;^&gt;your_domain&lt;^&gt;!&lt;/title&gt;

    &lt;/head&gt;

    &lt;body&gt;

        &lt;h1&gt;Success!  The &lt;^&gt;your_domain&lt;^&gt; server block is working!&lt;/h1&gt;

    &lt;/body&gt;

&lt;/html&gt;

				
			

Guarde y cierre el archivo cuando termine.

Cree un nuevo bloque de servidor en /etc/nginx/sites-available/<^>your_domain<^>:

				
					
sudo nano /etc/nginx/sites-available/&lt;^&gt;your_domain&lt;^&gt;

				
			

Péguelo en el siguiente bloque de configuración, actualizado para nuestro nuevo directorio y nombre de dominio:

				
					
[label /etc/nginx/sites-available/your_domain]

server {

        listen 80;

        listen [::]:80;



        root /var/www/&lt;^&gt;your_domain&lt;^&gt;/html;

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



        server_name &lt;^&gt;your_domain&lt;^&gt; www.&lt;^&gt;your_domain&lt;^&gt;;



        location / {

                try_files $uri $uri/ =404;

        }

}

				
			

Guarde y cierre el archivo cuando termine.

Habilite el archivo creando un enlace entre él y el directorio sites-enabled:

				
					
sudo ln -s /etc/nginx/sites-available/&lt;^&gt;your_domain&lt;^&gt; /etc/nginx/sites-enabled/

				
			

Con esto, quedarán habilitados y configurados dos bloques de servidor para responder a solicitudes según sus directivas listen y server_name:

  • your_domain: responderá a las solicitudes de your_domain y www.your_domain.
  • default: responderá a cualquier solicitud en el puerto 80 que no coincida con los otros dos bloques.

Para evitar un problema de memoria de depósito de hash que pueda surgir al agregar nombres de servidor, es necesario aplicar ajustes a un valor en el archivo /etc/nginx/nginx.conf. Abra el archivo:

				
					
sudo nano /etc/nginx/nginx.conf

				
			

Encuentre la directiva server_names_hash_bucket_size y elimine el símbolo # para quitar el comentario de la línea:

				
					
[label /etc/nginx/nginx.conf]

...

http {

    ...

    server_names_hash_bucket_size 64;

    ...

}

...

				
			

Realice una prueba en busca de errores de sintaxis:

				
					
sudo nginx -t

				
			

Reinicie Nginx para habilitar sus cambios:

				
					
sudo systemctl restart nginx

				
			

Con esto, Nginx debería proporcionar su nombre de dominio. Puede probarlo visitando http://<^>your_domain<^>, donde debería obtener algo como lo siguiente:

Conclusión

Una vez instalado su servidor web, tiene muchas opciones respecto del tipo de contenido que ofrecerá y de las tecnologías que desee usar para crear una experiencia más completa.

Si quiere compilar una pila de aplicación más completa, consulte este artículo sobre cómo configurar una pila LEMP en Ubuntu 20.04.