Cómo instalar Nginx en Ubuntu 18.04

0 acciones
0
0
0
0

Introducción

Nginx es uno de los servidores web más populares del mundo, responsable de alojar algunos de los sitios web más grandes y visitados de internet. En la mayoría de los casos, consume menos recursos que Apache y puede utilizarse como servidor web o proxy inverso.

En esta guía, aprenderá cómo instalar Nginx en un servidor Ubuntu 18.04 y sobre archivos y directorios importantes de Nginx.

Requisitos previos

Antes de comenzar esta guía, debe configurar un usuario normal (no root) con privilegios de sudo y un firewall básico en su servidor. Puede aprender a configurar una cuenta de usuario normal siguiendo nuestra guía básica de configuración de servidores para Ubuntu 18.04.

Una vez que tenga una cuenta disponible, inicie sesión como usuario no root para comenzar.

Paso 1 – Instalar Nginx

Dado que Nginx está disponible en los repositorios predeterminados de Ubuntu, se puede instalar desde estos repositorios utilizando el sistema de empaquetado apt.

Dado que esta podría ser su primera interacción con el sistema de empaquetado de apt en esta sesión, actualice su directorio de paquetes local para acceder a las listas de paquetes más recientes. Después, puede instalar nginx:

sudo apt update
sudo apt install nginx

Después de aceptar el procedimiento, apt instalará Nginx y cualquier dependencia requerida en su servidor.

Paso 2 – Configurar el firewall

Antes de probar Nginx, se debe configurar el firewall para permitir el acceso al servicio. Tras la instalación, Nginx se registra como servicio en ufw, lo que facilita el acceso.

Enumere las configuraciones de aplicación con las que ufw sabe trabajar escribiendo lo siguiente:

sudo ufw app list

El resultado debe ser una lista de perfiles de aplicación:

Output
Available applications:
Nginx Full
Nginx HTTP
Nginx HTTPS
OpenSSH

Esta lista muestra los tres perfiles disponibles para Nginx:

  • Nginx Full: este perfil abre tanto el puerto 80 (tráfico web normal, sin cifrar) como el puerto 443 (tráfico cifrado TLS/SSL).
  • Nginx HTTP: Este perfil solo abre el puerto 80 (tráfico web normal, sin cifrar)
  • Nginx HTTPS: Este perfil solo abre el puerto 443 (tráfico cifrado TLS/SSL)

Se recomienda habilitar el perfil más restrictivo que permita el tráfico configurado. Dado que aún no ha configurado SSL para su servidor en esta guía, solo necesita permitir el tráfico en el puerto 80.

Puedes habilitar esto escribiendo lo siguiente:

sudo ufw allow 'Nginx HTTP'

Luego, confirma el cambio:

sudo ufw status

Debería obtener una lista del tráfico HTTP permitido en la salida:

Output
Status: active
To Action From
-- ------ ----
OpenSSH ALLOW Anywhere 
Nginx HTTP ALLOW Anywhere 
OpenSSH (v6) ALLOW Anywhere (v6) 
Nginx HTTP (v6) ALLOW Anywhere (v6)

Ahora que ha agregado la regla de firewall adecuada, puede verificar que su servidor web esté funcionando y pueda servir contenido correctamente.

Paso 3 – Verifique su servidor web

Al finalizar la instalación, Ubuntu 18.04 iniciará Nginx. El servidor web ya debería estar iniciado.

Verifique con systemd init para asegurarse de que el servicio se esté ejecutando:

systemctl status nginx
Output
● nginx.service - A high performance web server and a reverse proxy server
Loaded: loaded (/lib/systemd/system/nginx.service; enabled; vendor preset: en
Active: active (running) since Fri 2021-10-01 21:36:15 UTC; 35s ago
Docs: man:nginx(8)
Main PID: 9039 (nginx)
Tasks: 2 (limit: 1151)
CGroup: /system.slice/nginx.service
├─9039 nginx: master process /usr/sbin/nginx -g daemon on; master_pro
└─9041 nginx: worker process

Este resultado indica que el servicio se inició correctamente. Sin embargo, la mejor manera de comprobarlo es solicitar una página a Nginx.

Puedes acceder a la página de destino predeterminada de Nginx navegando a la dirección IP de tu servidor para verificar que el software funciona correctamente. Si desconoces la dirección IP de tu servidor, puedes obtenerla de diferentes maneras.

Intente escribir lo siguiente en la línea de comando de su servidor:

ip addr show eth0 | grep inet | awk '{ print $2; }' | sed 's/\/.*$//'

Verás algunas líneas. Puedes probarlas en tu navegador para comprobar si funcionan.

Una alternativa es ejecutar el siguiente comando, que debería crear su dirección IP pública tal como se identifica desde otra ubicación en Internet:

curl -4 icanhazip.com

Una vez que tenga la dirección IP de su servidor, ingrésela en la barra de direcciones de su navegador:

http://your_server_ip

Debería obtener la página de destino predeterminada de Nginx:

Esta página viene con Nginx para verificar que el servidor esté funcionando correctamente.

Paso 4: Administrar el proceso Nginx

Ahora que tiene configurado su servidor web, repasemos algunos comandos administrativos básicos.

Para detener su servidor web, escriba lo siguiente:

sudo systemctl stop nginx

Para iniciar el servidor web si se detiene, escriba lo siguiente:

sudo systemctl start nginx

Para detener y luego reiniciar el servicio, escriba lo siguiente:

sudo systemctl restart nginx

Si simplemente está realizando cambios de configuración, a menudo puede recargar Nginx sin eliminar las conexiones en lugar de reiniciar. Para ello, escriba lo siguiente:

sudo systemctl reload nginx

De forma predeterminada, Nginx está configurado para iniciarse automáticamente al arrancar el servidor. Si no desea que esto sea así, puede desactivar este comportamiento escribiendo lo siguiente:

sudo systemctl disable nginx

Para volver a habilitar el servicio para que se inicie durante el arranque, puede escribir lo siguiente:

sudo systemctl enable nginx

Nginx ahora debería reiniciarse automáticamente cuando se inicia el servidor.

Paso 5 – Configurar bloques de servidor (recomendado)

Al usar el servidor web Nginx, se pueden usar bloques de servidor (similares a los hosts virtuales de Apache) para encapsular los detalles de configuración y alojar más de un dominio desde un solo servidor. Configuraremos un dominio llamado your_domain, pero deberá reemplazarlo con su propio nombre de dominio. Para obtener más información sobre la configuración de nombres de dominio con DigitalOcean, consulte nuestra introducción al DNS de DigitalOcean.

Nginx en Ubuntu 18.04 tiene un bloque de servidor habilitado por defecto, configurado para servir documentos fuera de un directorio en /var/www/html. Si bien esto funciona bien para un solo sitio, puede resultar engorroso si se alojan varios. En lugar de cambiar /var/www/html, crearemos una estructura de directorios en /var/www para nuestro sitio your_domain y dejaremos /var/www/html como el directorio predeterminado para servir documentos en caso de que no coincida con la solicitud del cliente. Otros sitios

Cree un directorio para su_dominio de la siguiente manera, utilizando el indicador -p para crear cualquier directorio principal necesario:

sudo mkdir -p /var/www/your_domain/html

A continuación, asigne la propiedad del directorio con la variable de entorno $USER:

sudo chown -R $USER:$USER /var/www/your_domain/html

Si no ha cambiado su valor de umask, sus permisos de raíz web deberían ser correctos, pero puede asegurarse escribiendo lo siguiente:

sudo chmod -R 755 /var/www/your_domain

A continuación, crea una página index.html de muestra usando nano o tu editor favorito:

nano /var/www/your_domain/html/index.html

Dentro, agregue el siguiente ejemplo HTML:

<html>
<head>
<title>Welcome to your_domain!</title>
</head>
<body>
<h1>Success! The your_domain server block is working!</h1>
</body>
</html>

Guarda y cierra el archivo al terminar. Si usas nano, puedes salir presionando CTRL + X, luego Y y ENTER.

Para que Nginx muestre este contenido, debe crear un bloque de servidor con las instrucciones correctas. En lugar de modificar directamente el archivo de configuración predeterminado, cree un nuevo archivo en /etc/nginx/sites-available/your_domain:

sudo nano /etc/nginx/sites-available/your_domain

Agregue el siguiente bloque de configuración, que es similar al predeterminado, pero actualizado para su nuevo directorio y nombre de dominio:

server {
listen 80;
listen [::]:80;
root /var/www/your_domain/html;
index index.html index.htm index.nginx-debian.html;
server_name your_domain.com www.your_domain;
location / {
try_files $uri $uri/ =404;
}
}

Tenga en cuenta que hemos actualizado la configuración raíz al nuevo directorio y el nombre_del_servidor al nombre del dominio. Guarde y cierre el archivo al terminar.

Luego, habilite el archivo creando un enlace desde él al directorio sites-enabled, que Nginx leerá cuando se inicie:

sudo ln -s /etc/nginx/sites-available/your_domain /etc/nginx/sites-enabled/

Ahora dos bloques de servidor están habilitados y configurados para responder a las solicitudes según las directivas listen y server_name (puede leer más sobre cómo Nginx procesa estas directivas aquí):

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

Para evitar el posible problema de memoria del contenedor hash que puede surgir al agregar nombres de servidor adicionales, es necesario establecer un único valor en el archivo /etc/nginx/nginx.conf. Abra el archivo:

sudo nano /etc/nginx/nginx.conf

Busque el comando server_names_hash_bucket_size y elimine el símbolo # para descomentar la línea:

...
http {
...
server_names_hash_bucket_size 64;
...
}
...

Guarda y cierra el archivo cuando hayas terminado.

A continuación, realice una prueba para asegurarse de que no haya errores de sintaxis en ninguno de sus archivos Nginx:

sudo nginx -t

Si no hay problemas, reinicie Nginx para que los cambios surtan efecto:

sudo systemctl restart nginx

Nginx debería ahora servir tu nombre de dominio. Puedes comprobarlo accediendo a http://your_domain, donde deberías ver algo similar a lo siguiente:

Paso 6: Familiarícese con los archivos y directorios importantes de Nginx

Ahora que sabe cómo administrar el servicio Nginx, debería tomarse unos minutos para familiarizarse con algunos directorios y archivos importantes.

Contenido
  • /var/www/html: El contenido web, que por defecto consiste únicamente en la página predeterminada de Nginx que se vio anteriormente, se publica fuera del directorio /var/www/html. Esto se puede cambiar editando los archivos de configuración de Nginx.
Configuración del servidor
  • /etc/nginx: Directorio de configuración de Nginx. Todos los archivos de configuración de Nginx se encuentran aquí.
  • /etc/nginx/nginx.conf: El archivo de configuración principal de Nginx. Puede editarse para modificar la configuración global de Nginx.
  • /etc/nginx/sites-available/: Directorio donde se almacenan los bloques de servidor de cada sitio. Nginx no usará los archivos de configuración de este directorio a menos que estén enlazados al directorio "sites-enabled". Normalmente, toda la configuración de los bloques de servidor se realiza en este directorio y luego se habilita mediante la conexión a otro directorio.
  • /etc/nginx/sites-enabled/: El directorio donde se almacenan los bloques de servidor habilitados para cada sitio. Normalmente, se crean mediante enlaces a los archivos de configuración del directorio de sitios existente.
  • /etc/nginx/snippets: Este directorio contiene fragmentos de configuración que pueden incluirse en otras partes de la configuración de Nginx. Las secciones de configuración que puedan repetirse son buenas candidatas para reconvertirse en fragmentos.
Informes del servidor
  • /var/log/nginx/access.log: cada solicitud a su servidor web se registra en este archivo de registro, a menos que Nginx esté configurado de otra manera.
  • /var/log/nginx/error.log: cualquier error de Nginx se registra en este registro.

Resultado

Ahora que tiene su servidor web instalado, tiene muchas opciones para el tipo de contenido y tecnologías que desea utilizar para crear una experiencia más rica.

Deja una respuesta

Tu dirección de correo electrónico no será publicada. Los campos obligatorios están marcados con *

También te puede gustar