Introducción
Nginx es un servidor web gratuito y de código abierto utilizado para alojar sitios web y aplicaciones de todos los tamaños. El software es conocido por su bajo impacto en los recursos de memoria, su alta escalabilidad y su arquitectura modular y orientada a eventos que puede ofrecer un rendimiento seguro y predecible. Más que simplemente un servidor web, Nginx también funciona como un balanceador de carga, una caché HTTP y un proxy inverso.
En esta guía, instalarás Nginx en tu servidor Debian 10.
Prerrequisitos
Antes de comenzar esta guía, debes tener un usuario regular, no root, con privilegios sudo configurado en tu servidor. También debes tener un firewall activo. Puedes aprender cómo configurarlo siguiendo nuestra guía de configuración inicial del servidor para Debian 10.
Paso 1: Instalar Nginx
Nginx está disponible en los repositorios de software predeterminados de Debian, lo que hace posible instalarlo desde herramientas convencionales de gestión de paquetes.
Primero actualiza tu índice de paquetes local para reflejar los últimos cambios del origen:
Luego, instala el paquete nginx
:
Confirma la instalación ingresando Y
, luego presiona Enter
para proceder. apt
luego instalará Nginx y cualquier dependencia requerida en tu servidor.
Paso 2 – Ajustar el Firewall
Antes de probar Nginx, es necesario modificar la configuración del firewall para permitir el acceso externo a los puertos web predeterminados. Suponiendo que seguiste las instrucciones en los requisitos previos, deberías tener configurado un firewall UFW para restringir el acceso a tu servidor.
Durante la instalación, Nginx se registra en UFW para proporcionar algunos perfiles de aplicación que pueden ser utilizados para habilitar o deshabilitar el acceso a Nginx a través del firewall.
Enumera los perfiles de aplicación de ufw
escribiendo:
Deberías obtener un listado de los perfiles de aplicación:
OutputAvailable applications:
...
Nginx Full
Nginx HTTP
Nginx HTTPS
...
Como puedes ver, hay tres perfiles disponibles para Nginx:
- Nginx Full: Este perfil abre tanto el puerto
80
(tráfico web normal, no encriptado) como el puerto443
(tráfico encriptado TLS/SSL) - Nginx HTTP: Este perfil abre solo el puerto
80
(tráfico web normal, no encriptado) - Nginx HTTPS: Este perfil abre solo el puerto
443
(tráfico encriptado TLS/SSL)
Se recomienda habilitar el perfil más restrictivo que aún permita el tráfico que has configurado. Dado que aún no has configurado TLS/SSL para tu servidor en esta guía, solo necesitarás permitir el tráfico para HTTP en el puerto 80
.
Puedes habilitarlo escribiendo:
Puedes verificar el cambio escribiendo:
Lo que aparece son el tráfico HTTP permitido en la salida:
OutputStatus: active
To Action From
-- ------ ----
OpenSSH ALLOW Anywhere
Nginx HTTP ALLOW Anywhere
OpenSSH (v6) ALLOW Anywhere (v6)
Nginx HTTP (v6) ALLOW Anywhere (v6)
Paso 3 – Comprobando tu Servidor Web
Al finalizar el proceso de instalación, Debian 10 inicia Nginx. El servidor web debería estar en funcionamiento.
Puedes comprobar con el sistema de inicio systemd
para asegurarte de que el servicio está en funcionamiento escribiendo:
Output● 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 2022-06-28 18:42:58 UTC; 49s ago
Docs: man:nginx(8)
Main PID: 2729 (nginx)
Tasks: 2 (limit: 1167)
Memory: 7.2M
CGroup: /system.slice/nginx.service
├─2729 nginx: master process /usr/sbin/nginx -g daemon on; master_process on;
└─2730 nginx: worker process
Esta salida revela que el servicio se ha iniciado correctamente. Sin embargo, la mejor manera de probar esto es solicitando realmente una página de Nginx.
Puedes acceder a la página de inicio predeterminada de Nginx para confirmar que el software está funcionando correctamente navegando a la dirección IP de tu servidor. Si no conoces la dirección IP de tu servidor, puedes escribir esto en el símbolo del sistema de tu servidor:
Obtendrás algunas líneas de vuelta. Puedes probar cada una en tu navegador web para ver si funcionan.
Cuando tengas la dirección IP de tu servidor, ingrésala en la barra de direcciones de tu navegador:
http://your_server_ip
La página de inicio predeterminada de Nginx debería aparecer en tu navegador web:
Esta página está incluida con Nginx para mostrarte que el servidor está funcionando correctamente.
Paso 4 – Administración del Proceso Nginx
Ahora que tienes tu servidor web en funcionamiento, puedes revisar algunos comandos básicos de gestión.
Para detener tu servidor web, escribe:
Para iniciar el servidor web cuando está detenido, escribe:
Para detener y luego volver a iniciar el servicio, escribe:
Si estás realizando cambios de configuración, Nginx a menudo puede recargar sin desconectar las conexiones. Para hacer esto, escribe:
Por defecto, Nginx está configurado para iniciarse automáticamente cuando se inicia el servidor. Si esto no es lo que deseas, puedes deshabilitar este comportamiento escribiendo:
Para volver a habilitar el servicio para que se inicie en el arranque, puedes escribir:
Paso 5 – Configuración de Bloques de Servidor (Opcional)
Cuando se utiliza el servidor web Nginx, los bloques de servidor (similares a los hosts virtuales en Apache) se pueden usar para encapsular detalles de configuración y alojar más de un dominio en un solo servidor. En los siguientes comandos, reemplace su_nombre_de_dominio
con su propio nombre de dominio. Para obtener más información sobre cómo configurar un nombre de dominio con DigitalOcean, consulte nuestra introducción a DigitalOcean DNS.
Nginx en Debian 10 tiene un bloque de servidor habilitado de forma predeterminada que está configurado para servir documentos desde un directorio en /var/www/html
. Si bien esto funciona bien para un solo sitio, puede volverse difícil de manejar si está alojando varios sitios. En lugar de modificar /var/www/html
, cree una estructura de directorio dentro de /var/www
para el sitio web su_nombre_de_dominio
, dejando /var/www/html
en su lugar como el directorio predeterminado que se servirá si una solicitud de cliente no coincide con ningún otro sitio.
Cree el directorio para su_nombre_de_dominio
de la siguiente manera, utilizando la bandera -p
para crear cualquier directorio padre necesario:
A continuación, asigne la propiedad del directorio con la variable de entorno $USER
, que debería hacer referencia a su usuario actual del sistema:
Los permisos de su raíz web deberían estar correctos si no ha modificado su valor de umask
, pero puede asegurarse escribiendo:
A continuación, cree una página de ejemplo index.html
usando nano
o su editor de texto preferido:
Dentro, agregue el siguiente HTML de ejemplo:
<html>
<head>
<title>Welcome to your_domain</title>
</head>
<body>
<h1>Success! Your Nginx server is successfully configured for <em>your_domain</em>. </h1>
<p>This is a sample page.</p>
</body>
</html>
Guarda y cierra el archivo cuando hayas terminado. En nano
puedes hacer esto presionando CTRL + X
, luego Y
, y luego ENTER
.
Para que Nginx sirva este contenido, debes crear un bloque de servidor con las directivas correctas que apunten a tu directorio web personalizado. En lugar de modificar directamente el archivo de configuración predeterminado, haz uno nuevo en /etc/nginx/sites-available/tu_dominio
:
Agrega el siguiente bloque de configuración, similar al predeterminado pero actualizado para tu 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 www.your_domain;
location / {
try_files $uri $uri/ =404;
}
}
Observa la configuración actualizada de root
hacia tu nuevo directorio y el server_name
hacia tu nombre de dominio. Recuerda reemplazar tu_dominio
con tu nombre de dominio real.
A continuación, habilita este bloque de servidor creando un enlace simbólico a tu archivo de configuración personalizado dentro del directorio sites-enabled
, que Nginx lee durante el inicio:
Ahora tu servidor tiene dos bloques de servidor habilitados y configurados para responder a solicitudes basadas en sus directivas listen
y server_name
(puedes leer más sobre cómo Nginx procesa estas directivas aquí):
tu_dominio
: Responderá a solicitudes paratu_dominio
ywww.tu_dominio
.default
: Responderá a cualquier solicitud en el puerto80
que no coincida con los otros dos bloques.
Para evitar un posible problema de memoria del cubo hash que puede surgir al agregar nombres de servidor adicionales a su configuración, es necesario ajustar un solo valor en el archivo /etc/nginx/nginx.conf
. Abra el archivo:
Encuentre la directiva server_names_hash_bucket_size
y elimine el símbolo #
para descomentar la línea:
...
http {
...
server_names_hash_bucket_size 64;
...
}
...
Guarde y cierre el archivo cuando haya terminado.
A continuación, pruebe para asegurarse de que no haya errores de sintaxis en ninguno de sus archivos de Nginx:
Si no hay ningún problema, la salida será la siguiente:
Outputnginx: the configuration file /etc/nginx/nginx.conf syntax is ok
nginx: configuration file /etc/nginx/nginx.conf test is successful
Una vez que pase la prueba de configuración, reinicie Nginx para habilitar los cambios:
Ahora Nginx debería estar sirviendo su nombre de dominio. Puede probar esto navegando a http://su_domino
. El HTML personalizado que creó en la carpeta /var/www/su_domino/html/index.html
debería renderizarse aquí:
Paso 6 – Familiarizándose con Archivos y Directorios Importantes de Nginx
Ahora que sabe cómo administrar el servicio de Nginx en sí, puede tomarse un tiempo para familiarizarse con algunos directorios y archivos importantes.
Contenido
/var/www/html
: El contenido web real, que por defecto solo consiste en la página predeterminada de Nginx que viste anteriormente, se sirve desde el directorio/var/www/html
. Esto se puede cambiar modificando los archivos de configuración de Nginx.
Configuración del Servidor
/etc/nginx
: El directorio de configuración de Nginx. Todos los archivos de configuración de Nginx residen aquí./etc/nginx/nginx.conf
: El archivo de configuración principal de Nginx. Esto se puede modificar para realizar cambios en la configuración global de Nginx./etc/nginx/sites-available/
: El directorio donde se pueden almacenar bloques de servidor por sitio. Nginx no utilizará los archivos de configuración encontrados en este directorio a menos que estén vinculados al directoriosites-enabled
. Por lo general, toda la configuración de bloques de servidor se realiza en este directorio, y luego se habilita mediante la vinculación al otro directorio./etc/nginx/sites-enabled/
: El directorio donde se almacenan los bloques de servidor por sitio habilitados. Por lo general, estos se crean vinculando a archivos de configuración encontrados en el directoriosites-available
./etc/nginx/snippets
: Este directorio contiene fragmentos de configuración que pueden incluirse en otros lugares de la configuración de Nginx. Los segmentos de configuración potencialmente repetibles son buenos candidatos para refactorizar en fragmentos.
Registros 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 para hacer lo contrario./var/log/nginx/error.log
: Cualquier error de Nginx se registrará en este registro.
Conclusión
Ahora que tiene su servidor web instalado, tiene muchas opciones para el tipo de contenido que puede servir y las tecnologías que puede usar para crear una experiencia más rica para sus usuarios.
Source:
https://www.digitalocean.com/community/tutorials/how-to-install-nginx-on-debian-10