Cómo instalar Nginx en Ubuntu 18.04 LTS

En esta entrada vamos a ver cómo instalar y configurar Nginx en Ubuntu 18.04 LTS Bionic Beaver paso a paso, puesto que es una de las alternativas más valoradas en Internet a la hora de poner en funcionamiento un servidor web. También veremos cómo configurar servidores virtuales y acceso con protocolo seguro HTTPS mediante SSL en tu servidor o VPS Ubuntu.

Antes de instalar Nginx en Ubuntu 18.04

Necesitamos cumplir una serie de requisitos para seguir esta guía de instalación y configuración de Nginx en Ubuntu 18.04 LTS:

  • Un sistema Ubuntu 18.04 LTS Bionic Beaver actualizado.
  • Poder acceder por terminal con un usuario con permisos de sudo.
  • Conexión a Internet.

Estos requerimientos son mínimos, así que como seguramente ya los cumples (por eso estás leyendo esta entrada) vamos a pasar a la acción.

Cómo instalar Nginx en Ubuntu 18.04

Para instalar Nginx en Ubuntu 18.04 LTS obtendremos los paquetes necesarios desde el repositorio oficial de la distribución, a través del comando apt.

La primera acción será actualizar la información de estos repositorios, e incluso los paquetes ya instalados, que es la práctica habitual antes de instalar nuevo software en el sistema:

~$ sudo apt update && sudo apt -y upgrade

Con el sistema actualizado es el momento de descargar e instalar el paquete nginx junto a todas sus dependencias:

~$ sudo apt -y install nginx

A diferencia de otros sistemas, en Ubuntu 18.04 la instalación de Nginx queda activada y en funcionamiento de forma automática. Esto lo podemos comprobar con el comando systemctl status nginx:

como instalar nginx en ubuntu 18.04 lts bionic beaver

Podemos ver que el servicio nginx está activo y funcionando.

Cómo saber la versión instalada de Nginx

Puede que en algún momento quieras saber qué versión exacta de Nginx has instalado en tu sistema Ubuntu 18.04. Para ello basta lanzar en consola el comando nginx con el parámetro -v:

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

Cómo configurar el firewall UFW para Nginx en Ubuntu 18.04

Si tienes activado el firewall UFW en Ubuntu 18.04 LTS y quieres acceder al servidor Nginx desde la red deberías añadir las reglas necesarias en su configuración. Para permitir el acceso al servicio HTTP estándar añadimos esta regla:

~$ sudo ufw allow http

Si piensas ofrecer contenido seguro con el protocolo HTTPS, entonces debes añadir esta otra regla:

~$ sudo ufw allow https

Acceder al servidor web

Para acceder a la página por defecto del servidor Nginx desde la propia máquina Ubuntu 18.04 o desde la red usaremos como URL la dirección IP, dominio o nombre de máquina.

Para esta guía accederé desde otra máquina de la red local mediante el dominio ubuntu64.local.lan, por lo que usaré http://ubuntu64.local.lan como URL:

instalar nginx en ubuntu 18.04 lts bionic beaver

Todo funciona como debería. Ahora vamos a aprender a configurar Nginx en Ubuntu 18.04.

Cómo configurar Nginx en Ubuntu 18.04

Para configurar Nginx en Ubuntu 18.04 LTS editaremos los distintos archivos de configuración que se encuentran en la ruta /etc/nginx/. En este directorio existen una serie de archivos de texto organizados en subcarpetas para manejar cada aspecto de la configuración de Nginx.

El archivo principal es nginx.conf.

Servidores virtuales de Nginx en Ubuntu 18.04

Para configurar un servidor virtual de Nginx en Ubuntu 18.04 LTS necesitamos previamente tener un dominio o subdominio adicional configurado para apuntar al servidor. En el caso de una red local dicho dominio tendrá que estar configurado en el servidor DNS, router, etc. mientras que si se trata de un servidor en Internet habrá que registrar y configurar dicho dominio mediante algún servicio profesional como Namecheap, por ejemplo.

Si ya tenemos el dominio listo, crearemos un archivo de configuración bajo la ruta /etc/nginx/sites-available/.

Algo importante que debes tener en cuenta es que el servidor por defecto de Nginx en Ubuntu 18.04, que ya hemos visto en funcionamiento, es realmente un servidor virtual. Por tanto, tiene su propio archivo de configuración y es /etc/nginx/sites-available/default.

Para este ejemplo, crearé un servidor virtual para el subdominio vhost.ubuntu64.local.lan que ya está apuntando a la máquina Ubuntu 18.04 LTS de este tutorial.

En primer lugar creamos el directorio donde se alojarán los archivos del sitio web. Un buen sitio es bajo la ruta /var/www/:

~$ sudo mkdir -p /var/www/vhost.ubuntu64.local.lan/html

Para no tener que andar todo el tiempo trabajando con sudo, tal vez quieras que estas carpetas pertenezcan a tu usuario:

~$ sudo chown $USER:$USER /var/www/vhost.ubuntu64.local.lan/ -R

Deberíamos añadir algún contenido básico, creando un pequeño archivo index.html que se muestre al acceder al dominio:

~$ nano /var/www/vhost.ubuntu64.local.lan/html/index.html

Puedes añadir cualquier contenido, un simple mensaje de bienvenida servirá:

<h1>Bienvenido a vhost.ubuntu64.local.lan</h1>

Es el momento de empezar a configurar el servidor virtual, creando su archivo de configuración:

~$ sudo nano /etc/nginx/sites-available/vhost.ubuntu64.local.lan

El contenido de este archivo podría ser algo como esto:

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

        root /var/www/vhost.ubuntu64.local.lan/html;

        index index.html index.htm;

        server_name vhost.ubuntu64.local.lan;

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

La configuración se encuentra dentro de un bloque server en el que encontramos estas directivas:

listen

La primera línea es para IPv4 y la segunda para IPv6. Indicamos desde qué interfaz escuchar peticiones y en qué puerto. Al no indicar interfaces de red o direcciones IP se asume que se aceptarán todas las peticiones independientemente de desde qué adaptador de red procedan. El 80 indica el puerto estándar HTTP.

root

La ruta del directorio web de nuestro servidor virtual, que creamos anteriormente.

index

Nombres de archivo que se servirán por defecto si no se indica ninguno en la URL solicitada.

server_name

Dominio o subdominio al que atiende este servidor virtual.

location

Dentro de este bloque incluimos ciertas configuraciones que se aplicarán a las rutas relativas del servidor virtual. En el ejemplo, la petición de la URL se trata en primer lugar como fichero, si no existe el fichero se trata como directorio, y si tampoco existe se devolverá un error 404 (no encontrado).

Para que el servidor virtual funcione debemos crear un enlace simbólico de este archivo dentro del directorio /etc/nginx/sites-enabled/:

~$ sudo ln -s /etc/nginx/sites-available/vhost.ubuntu64.local.lan /etc/nginx/sites-enabled/

Y para que entre en funcionamiento hay que recargar la configuración de Nginx:

~$ sudo systemctl reload nginx

Es el momento de probar el nuevo servidor virtual introduciendo su dominio como dirección en el navegador:

Justo lo que esperábamos.

Seguridad SSL de Nginx en Ubuntu 18.04

Hasta ahora hemos trabajado con el protocolo HTTP, pero en cualquier entorno de producción debemos hacerlo con HTTPS para cifrar el tráfico y aportar seguridad a nuestros usuarios.

Necesitamos certificados SSL para el servidor web que, en el caso de tratarse de una máquina en Internet, deben estar firmados por autoridades certificadoras, como los que podemos obtener en servicios como Namecheap:

SSL Certificate for just $8.88 with Namecheap

Si se trata de un servicio en red local o en pruebas, podemos recurrir a certificados autofirmados creados por nosotros mismos, como los certificados Snakeoil de Ubuntu 18.04.

Para instalarlos necesitamos el paquete ssl-cert:

~$ sudo apt -y install ssl-cert

Ahora con el comando make-ssl-cert creamos estos certificados autofirmados:

~$ sudo make-ssl-cert generate-default-snakeoil

Estos certificados se crean para el dominio de la máquina Ubuntu 18.04, que es el mismo al que responde la web por defecto de Nginx.

Por tanto, vamos a incorporarlos a la configuración del sitio web por defecto de Nginx en Ubuntu 18.04, editando su archivo de configuración:

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

Podemos observar que el bloque server contiene algunas directivas desactivadas relativas al cifrado SSL:

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

        # SSL configuration
        #
        # listen 443 ssl default_server;
        # listen [::]:443 ssl default_server;
        #
        # Note: You should disable gzip for SSL traffic.
        # See: https://bugs.debian.org/773332
        #
        # Read up on ssl_ciphers to ensure a secure configuration.
        # See: https://bugs.debian.org/765782
        #
        # Self signed certs generated by the ssl-cert package
        # Don't use them in a production server!
        #
        # include snippets/snakeoil.conf;

        root /var/www/html;
...

Lo único que hay que hacer es descomentar las dos directivas listen que activan la escucha de conexiones seguras en el puerto 443, y la directiva include que carga la configuración de los certificados autofirmados:

...
listen 443 ssl default_server;
listen [::]:443 ssl default_server;
...
include snippets/snakeoil.conf;
...

Guardados los cambios, recargamos la configuración de Nginx:

~$ sudo systemctl reload nginx

Y accedemos al dominio o dirección IP de la máquina Ubuntu 18.04, pero esta vez indicando el protocolo HTTPS en lugar del HTTP, en el caso del ejemplo de este tutorial usaríamos https://ubuntu64.local.lan como URL:

como configurar nginx en ubuntu 18.04 lts bionic beaver

Dependiendo del navegador que uses recibirás un mensaje de advertencia informando de que la conexión cifrada emplea certificados autofirmados, que no están garantizados por ninguna autoridad certificadora. Utilizando las opciones que nos ofrece el navegador podemos confirmar la excepción de seguridad y acceder a la página web usando HTTPS:

configurar nginx en ubuntu 18.04 lts

Si dispones de certificados firmados por alguna autoridad para el dominio principal o el de algún servidor virtual y los quieres usar, simplemente tienes que añadir las directivas listen para SSL, un par de directivas que indiquen las rutas de los archivos del certificado para el dominio que se trate, y desactivar la directiva include que carga los certificados Snakeoil.

Por ejemplo, si tenemos certificados firmados para el dominio del servidor virtual que configuramos anteriormente, editaríamos su archivo de configuración con estas modificaciones:

...
listen 443 ssl;
listen [::]:443 ssl;
...
ssl_certificate /etc/letsencrypt/live/vhost.ubuntu64.local.lan/cert.pem;
ssl_certificate_key /etc/letsencrypt/live/vhost.ubuntu64.local.lan/privkey.pem;
...

Conclusión

Ahora que sabes cómo instalar Nginx en Ubuntu 18.04 LTS ya puedes aprovechar su reputación de servidor ligero y rápido para montar tus aplicaciones web, sin nada que envidiar o echar en falta con respecto a otros servidores web.

En caso de dudas, sugerencias, notificación de errores, etc. sobre esta guía, déjame un comentario.

¡Apoya este sitio!

El proceso de instalar y configurar Nginx en Ubuntu 18.04 es algo más complicado que con otros servidores web, pero si has llegado hasta aquí ahorrándote algún quebradero de cabeza, quizás quieras agradecérnoslo contribuyendo con el mantenimiento de este sitio, cosa que puedes hacer dejando 1 $ de propina con PayPal:

¡Gracias!

Valora esta entrada

5/5 - (1 voto)

Deja un comentario