Cómo instalar Nginx en Ubuntu 20.04 LTS

En este artículo veremos cómo instalar Nginx en Ubuntu 20.04 LTS Focal Fossa paso a paso, de manera que puedas trabajar con un servidor web ampliamente utilizado desde tu servidor o VPS Ubuntu.

Antes de instalar Nginx en Ubuntu 20.04

Para poder completar esta guía de instalación de Nginx en Ubuntu 20.04 LTS bastará con partir de las siguientes condiciones:

  • Una máquina Ubuntu 20.04 LTS Focal Fossa.
  • Acceso a terminal de comandos con un usuario con permisos de sudo.
  • Conexión a Internet.

Cómo instalar Nginx en Ubuntu 20.04

Vamos a instalar Nginx en Ubuntu 20.04 LTS desde los repositorios de la distribución, por lo que será buena idea actualizar las listas de paquetes previamente:

~$ sudo apt update

El paquete que buscamos es nginx, que instalamos con apt:

~$ sudo apt install -y nginx

Una vez terminada la descarga e instalación de Nginx y sus dependencias se crea en Ubuntu 20.04 un nuevo servicio llamado nginx.service o simplemente nginx, que queda en ejecución y habilitado para inicar automáticamente con cada arranque de Ubuntu 20.04.

Podemos comprobar en cualquier momento el estado del servicio Nginx con el comando systemctl status nginx:

como instalar nginx en ubuntu 20.04 lts focal fossa

También puedes averiguar en cualquier momento la versión instalada de Nginx en Ubuntu 20.04 con el comando nginx -v:

~$ nginx -v
nginx version: nginx/1.18.0 (Ubuntu)

Configurar el firewall UFW para Nginx en Ubuntu 20.04

Si tienes instalado el firewall UFW en Ubuntu 20.04, será necesario añadir algunas reglas para Nginx, de modo que el servicio web sea accesible desde red:

~$ sudo ufw allow http

Si vas a ofrecer contenido mediante conexiones seguras hay que añadir también una regla para el protocolo HTTPS:

~$ sudo ufw allow https

Cómo acceder a Nginx

Para acceder a Nginx en Ubuntu 20.04 LTS desde un navegador, bastará con usar como URL la dirección IP o nombre DNS del servidor.

Por ejemplo, la máquina Ubuntu 20.04 sobre la que hemos realizado este tutorial de Nginx es accesible en el dominio ubuntu2004.local.lan, por lo que usamos http://ubuntu2004.local.lan como URL:

instalar nginx en ubuntu 20.04 lts focal fossa

Veremos la página web por defecto.

Cómo configurar Nginx en Ubuntu 20.04

Vamos a configurar Nginx en Ubuntu 20.04 LTS a través de algunos ejemplos, para lo que debemos tener en cuenta que el directorio de configuración se encuentra en la ruta /etc/nginx/. El archivo principal es nginx.conf, que carga otros archivos repartidos entre el directorio principal y otros subdirectorios.

Es señalable el hecho de que los subdirectorios modules-available/ y sites-available/ almacenan archivos de configuración para módulos de Ngins y servidores virtuales respectivamente, pero estos archivos no son cargados directamente por Nginx. Para que Nginx tenga en cuenta estos archivos deberán existir enlaces simbólicos en los subdirectorios modules-enabled/ y sites-enabled/. De esta forma, activar una configuración es crear un enlace simbólico, mientras que desactivarla es eliminar el enlace, sin perder el archivo de configuración en sí.

Comprobar la configuración de Nginx

Para aplicar los cambios de configuración de Nginx en Ubuntu 20.04 LTS hay que recargar los ajustes del servicio, pero antes de hacerlo es buena idea comprobar que las modificaciones sean correctas, para lo que diponemos del parámetro -t del comando nginx:

~$ sudo nginx -t
nginx: the configuration file /etc/nginx/nginx.conf syntax is ok
nginx: configuration file /etc/nginx/nginx.conf test is successful

Si se encuentran errores podremos corregirlos antes de aplicar la configuración.

Servidores virtuales (virtual host) en Nginx para Ubuntu 20.04

Las distintas configuraciones para servidores virtuales se encuentran en el subdirectorio sites-available/, donde encontraremos el archivo default que es la configuración del sitio por defecto que acabamos de ver.

Para crear un nuevo servidor virtual de Nginx necesitaremos un dominio o subdominio distinto al principal configurado para apuntar a la misma máquina Ubuntu 20.04. En el caso de estar configurando un servidor web en Internet necesitaremos registrar y configurar el dominio a través de algún servicio profesional como Namecheap.

Si se trata de una red local, habrá que configurar el servidor DNS de forma adecuada.

En este ejemplo tenemos como dominio principal ubuntu2004.local.lan y como subdominio secundario pruebas.ubuntu2004.local.lan, ambos apuntando al servidor Ubuntu 20.04 en el que configuramos Nginx.

como instalar y configurar nginx en ubuntu 20.04 lts focal fossa

Empezaremos creando algo de contenido web para este servidor, preparando el directorio de documentos:

~$ sudo mkdir /var/www/pruebas.ubuntu2004.local.lan

Creamos un archivo index.html para mostrar algún mensaje identificativo:

~$ sudo nano /var/www/pruebas.ubuntu2004.local.lan/index.html

Con un contenido como este:

<h1>Bienvenidos a pruebas.ubuntu2004.local.lan</h1>
<small>Powered by Nginx and Ubuntu 20.04 LTS</small>

Y guardamos los cambios.

Obviamente, si tienes ya un contenido web preparado puedes ubicarlo en la ruta que hemos creado.

Ahora creamos el archivo de configuración para el nuevo servidor virtual:

~$ sudo nano /etc/nginx/sites-available/pruebas.ubuntu2004.local.lan

Con el contenido:

server {
        listen 80;
        listen [::]:80;

        server_name pruebas.ubuntu2004.local.lan;

        root /var/www/pruebas.ubuntu2004.local.lan;

        location / {
                try_files $uri $uri/ =404;
        }
}

La configuración está enmarcada dentro de un bloque server, en el que las directivas son bastante intuitivas:

  • listen: Indica el puerto de escucha (en este caso el puerto 80 estándar para HTTP), una línea para IPv4 y otra para IPv6.
  • server_name: El dominio o subdominio al que atenderá este servidor virtual.
  • root: La ruta de los archivos del sitio web.
  • location: Bloque para configurar opciones para la ruta especificada.
  • try_files: En este caso indica que la URI o ruta solicitada se trate en primer lugar como archivo, si no existe como directorio y si tampoco existe se devuelva un error 404.

Guardados los cambios, activamos la configuración creando el enlace simbólico en sites-enabled/:

~$ sudo ln -s /etc/nginx/sites-available/pruebas.ubuntu2004.local.lan /etc/nginx/sites-enabled/

De esta forma Nginx tendrá en cuenta el archivo de configuración que acabamos de crear, sólo queda recargar la configuración del servicio para aplicar los cambios de inmediato:

~$ sudo systemctl reload nginx

Ahora si volvemos a visitar los dos dominios (dominio y subdominio en este caso), veremos una página web distinta:

instalar y configurar nginx en ubuntu 20.04 lts focal fossa

¡Justo lo que queríamos!

Repitiendo este proceso podrás alojar tantos servidores virtuales como necesites y soporten los recursos de tu máquina Ubuntu 20.04 LTS.

Seguridad SSL para Nginx en Ubuntu 20.04

Vamos ahora a configurar la seguridad SSL para Nginx en Ubuntu 20.04 LTS, de modo que podamos conectar usando el protocolo HTTPS. Necesitamos claves y certificados para poder cifrar las conexiones, que en un entorno de producción deberían estar firmados por autoridades certificadoras, como los que ofrece Namecheap:

SSL Certificate for just $8.88 with Namecheap

En el caso de una red local o para prácticas podrían ser válidos certificados autofirmados.

Por ejemplo, podemos preparar unos certificados autofirmados para el dominio principal de la máquina Ubuntu 20.04, ubuntu2004.local.lan en este ejemplo con el siguiente comando:

~$ sudo openssl req -newkey rsa:2048 -x509 -nodes -days 3650 -out /etc/ssl/certs/ubuntu2004.local.lan.crt -keyout /etc/ssl/private/ubuntu2004.local.lan.key

De igual modo podemos prepararlos para el servidor virtual del ejemplo anterior:

~$ sudo openssl req -newkey rsa:2048 -x509 -nodes -days 3650 -out /etc/ssl/certs/pruebas.ubuntu2004.local.lan.crt -keyout /etc/ssl/private/pruebas.ubuntu2004.local.lan.key

Durante la ejecución de este comando interactivo, debemos contestar con el dominio con el que estamos trabajando a la pregunta «Common Name«, para asociar el certificado:

...
Common Name (e.g. server FQDN or YOUR name) []:ubuntu2004.local.lan
...

O para el servidor virtual:

...
Common Name (e.g. server FQDN or YOUR name) []:pruebas.ubuntu2004.local.lan
...

Sea como sea la forma en la que has obtenido los certificados (firmados por entidades certificadoras o autofirmados), volveremos al archivo de configuración del servidor virtual para añadir algunas directivas que activen la configuración SSL.

Si vamos a trabajar sobre el sitio web principal:

~$ sudo nano /etc/nginx/sites-available/default

O si lo hacemos sobre el servidor virtual:

~$ sudo nano /etc/nginx/sites-available/pruebas.ubuntu2004.local.lan

En este tutorial vamos a trabajar sobre el servidor virtual de ejemplo, ya que el archivo de configuración del servidor por defecto es más extenso, repleto de comentarios, opciones desactivadas, etc.

Modificamos la configuración del bloque server:

server {
        listen 80;
        listen [::]:80;
        listen 443 ssl;
        listen [::]:443 ssl;

        server_name pruebas.ubuntu2004.local.lan;

        ssl_certificate /etc/ssl/certs/pruebas.ubuntu2004.local.lan.crt;
        ssl_certificate_key /etc/ssl/private/pruebas.ubuntu2004.local.lan.key;

        root /var/www/pruebas.ubuntu2004.local.lan;

        location / {
                try_files $uri $uri/ =404;
        }
}

Básicamente hemos hecho lo siguiente:

  • Un par de directivas listen para el puerto estándar HTTPS, el 443, y activando el modo SSL.
  • ssl_certificate: Ruta al certificado público que se envía al navegador del visitante.
  • ssl_certificate_key: Ruta a la clave privada con la que se cifra la conexión.

Guardamos los cambios y recargamos la configuración:

~$ sudo systemctl reload nginx

Ahora podemos conectar usando HTTPS en lugar de HTTP, en este ejemplo para el servidor virtual sería https://pruebas.ubuntu2004.local.lan la URL:

En este caso, al usar certificados autofirmados el navegador avisará de que no puede comprobar la identidad del emisor, lo que es perfectamente normal. Dependiendo del navegador, nos ofrecerá la posibilidad de continuar con la conexión, accediendo al sitio web:

configurar nginx en ubuntu 20.04 lts focal fossa

Aunque siga mostrándose algún tipo de aviso, la conexión está cifrada.

Preparando claves privadas y certificados asociados a los distintos dominios de nuestros servidores virtuales, podremos ofrecer contenido seguro.

nginx en ubuntu 20.04 lts focal fossa

Conclusión

Ahora que sabes cómo instalar Nginx en Ubuntu 20.04 LTS Focal Fossa ya puedes ofrecer sitios web desde tu servidor, incluso usando distintos dominios con servidores virtuales y, por supuesto, protegiendo las conexiones con seguridad SSL a través del protocolo HTTPS.

Si te ha surgido alguna duda o pregunta, tienes sugerencias de mejora de este artículo, crees que necesita una actualización o quieres notificar algún error, deja un comentario.

¡Apoya comoinstalar.me!

¿Ya puedes servir tus propios sitios web gracias a esta guía de instalación de Nginx en Ubuntu 20.04 LTS Focal Fossa? En caso afirmativo, tal vez quieras agradecérnoslo contribuyendo al mantenimiento de este sitio y la creación de nuevos artículos y tutoriales como este.

Puedes hacerlo dejando una propina de tan sólo 1 $ en PayPal:

O, si te sientes especialmente agradecido, invitándonos a un café:

¡Gracias!

Valora esta entrada

5/5 - (2 votos)