Cómo instalar el servidor web Nginx en Ubuntu 20.04


Nginx es un servidor web de código abierto y de alto rendimiento que tiene una gran participación de mercado en entornos de producción. Es un servidor web ligero y robusto que se utiliza principalmente para alojar sitios web de alto tráfico.

Lectura relacionada: Cómo instalar el servidor web Apache en Ubuntu 20.04

En esta guía, aprenderá cómo instalar el servidor web Nginx y configurar el bloque del servidor Nginx (hosts virtuales) en Ubuntu 20.04 LTS.

Para comenzar, asegúrese de tener una instancia de Ubuntu 20.04 LTS con acceso SSH y un usuario Sudo con privilegios de root. Además, se recomienda una conexión a Internet estable para instalar paquetes de Nginx.

Instalación de Nginx en Ubuntu 20.04

1. Antes de instalar Nginx, actualice las listas de paquetes de su servidor.

$ sudo apt update

2. Luego instale Nginx ejecutando el comando:

$ sudo apt install nginx

Cuando se le solicite continuar, presione Y en el teclado y presione ENTER. La instalación se realizará en tan solo unos segundos.

3. Con Nginx instalado correctamente, puede iniciarlo y verificarlo ejecutando:

$ sudo systemctl start nginx
$ sudo systemctl status nginx

La salida anterior indica claramente que Nginx se está ejecutando.

4. Para verificar la versión de Nginx, ejecute:

$ sudo dpkg -l nginx

El resultado indica que estamos ejecutando Nginx 1.17.10, que es la última versión en el momento de escribir este artículo.

Puertos abiertos Nginx en UFW Firewall

Ahora que tiene Nginx instalado y funcionando como se esperaba, se requieren algunos ajustes para poder acceder a Nginx a través de un navegador web. Si está ejecutando el firewall UFW, debe permitir el perfil de la aplicación Nginx.

Hay 3 perfiles de Nginx asociados con el firewall ufw.

  1. Nginx Full: abre los puertos 80 y 443 (para cifrado SSL/TLS).
  2. HTTP Nginx: este puerto abierto solo 80 (para tráfico web no cifrado).
  3. Nginx HTTPS: abre solo el puerto 443 (para cifrado SSL/TLS).

5. Comience habilitando el firewall en Ubuntu 20.04.

$ sudo ufw enable

6. Por ahora, dado que no estamos en un servidor encriptado, solo permitiremos el perfil HTTP de Nginx que permitirá el tráfico en el puerto 80.

$ sudo ufw allow 'Nginx HTTP'

7. Luego, vuelva a cargar el firewall para que los cambios persistan.

$ sudo ufw reload

8. Ahora verifique el estado del firewall para verificar los perfiles que se han permitido.

$ sudo ufw status

Probando el Nginx en Ubuntu 20.04

Nginx se ejecuta en el navegador como es de esperar con cualquier servidor web y la forma más segura de probar si se está ejecutando como se espera es enviar solicitudes a través de un navegador.

9. Diríjase a su navegador y busque la dirección IP o el nombre de dominio del servidor. Para verificar la IP de su servidor, ejecute el comando ifconfig:

$ ifconfig

10. Si está en un servidor en la nube, ejecute el comando curl a continuación para recuperar la IP pública del servidor.

$ curl ifconfig.me

11. En el campo URL de su navegador, ingrese la dirección IP de su servidor o el nombre de dominio y presione ENTER.

http://server-IP or domain-name

Debería obtener una página de bienvenida predeterminada de Nginx como se muestra.

Administrar el proceso de Nginx en Ubuntu 20.04

12. Para detener el servidor web Nginx, simplemente ejecute:

$ sudo systemctl stop nginx

13. Para volver a activar el servidor web, ejecute:

$ sudo systemctl start nginx

14. Para iniciar Nginx automáticamente al arrancar o reiniciar, ejecute:

$ sudo systemctl enable nginx

15. Si desea reiniciar el servidor web, especialmente después de realizar cambios en los archivos de configuración, ejecute:

$ sudo systemctl restart nginx

16. Alternativamente, puede recargar para evitar que se caigan las conexiones como se muestra.

$ sudo systemctl reload nginx

Configuración de Nginx Server Block en Ubuntu 20.04

Si planea alojar más de un sitio en su servidor, es muy recomendable configurar un bloque de servidor Nginx. El bloque del servidor es el equivalente al host virtual de Apache.

De forma predeterminada, Nginx se envía con su bloque de servidor predeterminado que está configurado para servir contenido web en la ruta /var/www/html .

Vamos a crear un bloque de Nginx separado para servir el contenido de nuestro dominio. Para esta guía, usaremos el dominio crazytechgeek.info .
Para su caso, asegúrese de reemplazarlo con su propio nombre de dominio.

17. Para crear un archivo de bloque de servidor, primero, cree un directorio para su dominio como se muestra.

$ sudo mkdir -p /var/www/crazytechgeek.info/html

18. A continuación, asigne la propiedad al nuevo directorio usando la variable $USER .

$ sudo chown -R $USER:$USER /var/www/crazytechgeek.info/html

19. Asegúrese de que también asigna permisos de directorio en consecuencia, lo que permite que el propietario tenga todos los permisos (leer, escribir y ejecutar) y otorgar a otras partes solo permisos de lectura y ejecución.

$ sudo chmod -R 755 /var/www/crazytechgeek.info

20. Dentro del directorio del dominio, cree un index.html un archivo que contendrá el contenido web del dominio.

$ sudo vim /var/www/crazytechgeek.info/html/index.html

Pegue el contenido a continuación en el archivo de prueba de muestra.

<html>
    <head>
        <title>Welcome to your_domain!</title>
    </head>
    <body>
        <h1>Bravo! Your server block is working as expected!</h1>
    </body>
</html>

Guarde los cambios y salga del archivo.

21. Para que el servidor web Nginx proporcione el contenido que acaba de agregar, debe crear un bloque de servidor con las directivas adecuadas. En este caso, creamos un nuevo bloque de servidor en:

$ sudo vim /etc/nginx/sites-available/crazytechgeek.info

Pegue la configuración que se muestra.

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

        root /var/www/crazytechgeek.info/html;
        index index.html index.htm index.nginx-debian.html;

        server_name crazytechgeek.info  www.crazytechgeek.info;

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

Guardar y Salir.

22. Ahora habilite el archivo de bloqueo del servidor vinculándolo al directorio habilitado para sitios desde el cual el servidor Nginx lee al inicio.

$ sudo ln -s /etc/nginx/sites-available/crazytechgeek.info /etc/nginx/sites-enabled/

23. Para que se efectúen los cambios, reinicie el servidor web Nginx.

$ sudo systemctl restart nginx

24. Solo para asegurarse de que todas las configuraciones estén en orden, ejecute el comando:

$ nginx -t

Si todas las configuraciones están en orden, debería obtener el resultado que se muestra a continuación:

25. El servidor web Nginx ahora debería servir el contenido de su dominio. Una vez más, diríjase a su navegador y explore el dominio de su servidor.

http://domain-name

Su contenido personalizado en el directorio de su dominio se publicará como se muestra.

Archivos de configuración importantes de Nginx

Antes de terminar, es crucial que examinemos algunos de los archivos de configuración importantes asociados con Nginx.

  • /etc/nginx/nginx.conf: este es el archivo de configuración principal. Puede modificar la configuración para cumplir con los requisitos de su servidor.
  • /etc/nginx/sites-available: este es el directorio que almacena la configuración del bloque del servidor. Nginx solo usa los bloques del servidor si están vinculados al directorio habilitado para sitios.
  • /etc/nginx/sites-enabled: el directorio contiene bloques de servidor Nginx por sitio que ya están habilitados.

Hay dos archivos de registro principales que puede utilizar para solucionar problemas de su servidor web Nginx:

  • /var/log/nginx/access.log: esto registra todas las solicitudes realizadas al servidor web.
  • /var/log/nginx/error.log: este es el archivo de registro de errores y registra todos los errores que encuentra Nginx.

Hemos llegado al final de este tutorial. Hemos mostrado cómo puede instalar Nginx en Ubuntu 20.04 y cómo puede configurar bloques de servidor Nginx para servir el contenido de su dominio. Sus comentarios son bienvenidos.