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 nginxDespué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 listEl resultado debe ser una lista de perfiles de aplicación:
Output
Available applications:
Nginx Full
Nginx HTTP
Nginx HTTPS
OpenSSHEsta 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 statusDeberí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 nginxOutput
● 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 processEste 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.comUna vez que tenga la dirección IP de su servidor, ingrésela en la barra de direcciones de su navegador:
http://your_server_ipDeberí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 nginxPara iniciar el servidor web si se detiene, escriba lo siguiente:
sudo systemctl start nginxPara detener y luego reiniciar el servicio, escriba lo siguiente:
sudo systemctl restart nginxSi 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 nginxDe 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.











