Instalación Nginx en Ubuntu Server 18.04

Nginx es un servidor web / proxy inverso ligero, de alto rendimiento y de código abierto.

Debido a su excelente capacidad para manejar muchas conexiones y a su velocidad, muchos sitios web de alto tráfico usan el servicio de NGINX. Algunos de estos gigantes del internet son Google, Netflix, Adobe, Cloudflare o WordPress.com.

En este artículo veremos como instalar y configurar este servidor web en un sistema Ubuntu 18.04.

Requisitos Previos

Como requisito previo necesitaremos tener una máquina con Ubuntu 18.04 ya configurada, y acceso a un usuario con privilegios.

Paso 1 – Instalación de Nginx

En primer lugar, vamos a actualizar nuestro índice de paquetes. Una vez hecho podremos instalar Nginx.

sudo apt update
sudo apt install nginx

Tras esto se instalará Nginx y todas las dependencias necesarias.

Paso 2 – Añadir reglas al Firewall

Es recomendable tener activado el firewall por lo que vamos a añadir una regla al mismo para permitir el funcionamiento de Nginx.

Podremos agregar cualquiera de los tres perfiles disponibles:

  • Nginx FULL
  • Nginx HTTP
  • Nginx HTTPS

Activaremos alguno de ellos en función de si vamos a trabajar con HTTPS o no.

sudo ufw allow 'Nginx Full'

Tras esto verificaremos los cambios y aparecerá algo como lo siguiente.

sudo ufw status
Status: active

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

Podemos ver una lista con las aplicaciones disponibles en UFW utilizando el siguiente comando.

sudo ufw app list
Available applications:
  Nginx Full
  Nginx HTTP
  Nginx HTTPS
  OpenSSH

Paso 3 – Probar el servidor web

En este punto, el servidor ya debería estar ejecutándose. Para comprobarlo utilizaremos el siguiente comando.

systemctl status nginx
● 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 Tue 2020-04-14 07:22:45 UTC; 1min 46s ago
     Docs: man:nginx(8)
  Process: 2371 ExecStart=/usr/sbin/nginx -g daemon on; master_process on; (code=exited, status=0/SUCCESS)
  Process: 2359 ExecStartPre=/usr/sbin/nginx -t -q -g daemon on; master_process on; (code=exited, status=0/SUCCESS)
 Main PID: 2373 (nginx)
    Tasks: 2 (limit: 503)
   CGroup: /system.slice/nginx.service
           ├─2373 nginx: master process /usr/sbin/nginx -g daemon on; master_process on;
           └─2377 nginx: worker process

Si todo es correcto y el servicio está activo podremos acceder a la página por defecto de Nginx utilizando la dirección IP de nuestro servidor.

Si no funciona podemos reiniciar el servicio utilizando los siguientes comandos.

sudo systemctl stop nginx
sudo systemctl start nginx
sudo systemctl restart nginx
sudo systemctl reload nginx
sudo systemctl disable nginx
sudo systemctl enable nginx

Paso 4 – Crear los bloques de servidor

Los bloques de servidor de Nginx permiten alojar más de un sitio y separar la configuración de cada uno (parecidos a los Virtual Host de Apache). Siempre es recomendable configurarlo al hacer que el mantenimiento sea más sencillo.

Para este ejemplo utilizaremos el dominio ejemplo.com. En tu caso deberás sustituirlo por tu dominio. Si no tienes un dominio todavía y solo quieres acceder desde un equipo para hacer pruebas, puedes abrir el fichero hosts de windows y añadir una línea que apunte a la IP de tu servidor. Ten en cuenta que esto solo funcionará en tu red local y desde los equipos a los que se lo has añadido.

192.168.1.X     ejemplo.com          # Ahora ejemplo.com funcionará en LAN

Una vez tenemos el dominio configurado crearemos las carpetas que contendrán los sitios y daremos los permisos necesarios a nuestro usuario y a la carpeta.

sudo mkdir -p /var/www/ejemplo.com/html
sudo chown -R $USER:$USER /var/www/ejemplo.com/html
sudo chmod -R 755 /var/www/ejemplo.com

Ahora que ya tenemos dónde guardar nuestro primer sitio crearemos el bloque de servidor que dirá a Nginx dónde se encuentra y que dominio utiliza.

sudo nano /etc/nginx/sites-available/ejemplo.com.conf

Pega dentro del nuevo archivo el siguiente código.

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

        root /var/www/ejemplo.com/html;
        index index.html index.htm index.nginx-debian.html;

        server_name ejemplo.com www.ejemplo.com;

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

La variable root establece la carpeta donde se encuentra el sitio y la variable server_name la relaciona con nuestro dominio. Por cada sitio que tengamos estableceremos un nueva carpeta y dominio o subdominio.

Guardamos los cambios y cerramos el fichero.

Tras esto vamos a habilitar el bloque creando un enlace al fichero de configuración en la carpeta sites-enabled.

sudo ln -s /etc/nginx/sites-available/ejemplo.com.conf /etc/nginx/sites-enabled/

En este momento tendremos dos bloques de servidor habilitados. En primer lugar el que acabamos de crear que responderá a las peticiones de ejemplo.com, y en segundo lugar el bloque predeterminado que responderá a cualquier solicitud que no coincida con los otros bloques.

Por último haremos un pequeño cambio en la configuración de Nginx que evita posibles problemas de memoria. Abrimos el archivo.

sudo nano /etc/nginx/nginx.conf

Buscamos la línea server_names_hash_bucket_size y quitamos el símbolo # para descomentar.

Después comprobamos que no hay errores de configuración con el siguiente comando.

sudo nginx -t

Paso 5 – Probar nuestro sitio

Ahora, vamos a añadir una página de prueba para ver que todo funciona. Creamos un fichero index en la carpeta de nuestro sitio.

nano /var/www/ejemplo.com/html/index.html

Y añadimos el siguiente contenido.

<html>
    <head>
        <title>Bienvenido a ejemplo.com!</title>
    </head>
    <body>
        <h1>El sitio funciona correctamente.</h1>
    </body>
</html>

Reiniciamos Nginx.

sudo systemctl restart nginx

Y si todo funciona correctamente deberíamos ver la página de nuestro sitio accediendo a http://ejemplo.com.

Directorios y ficheros útiles de Nginx

Aquí dejo una serie de ficheros y directorios que se suelen utilizar.

Sitios

Es recomendable guardar todos nuestros sitios de forma consistente, las rutas más utilizadas suelen ser las siguientes:

  • /var/www/domain.com/html
  • /opt/domain.com

Logs

  • /var/log/nginx/error.log guarda los errores del servidor.
  • /var/log/nginx/access.log guarda las solicitudes que se hacen.

Configuración

  • /etc/nginx/nginx.conf configuración de Nginx.
  • /etc/nginx/sites-available/ bloques del servidor.
  • /etc/nginx/sites-enabled/ se guardan los vínculos a los bloques de servidor para habilitarlos.

Deja una respuesta

Tu dirección de correo electrónico no será publicada.