Introducción
Nginx es uno de los servidores web más populares del mundo y aloja algunos de los sitios web más grandes y con mayor tráfico de internet. Es una opción ligera que puede usarse como servidor web o como proxy inverso.
En esta guía, analizaremos cómo instalar Nginx en su servidor Rocky Linux 8, ajustar el firewall, administrar el proceso Nginx y configurar bloques de servidor para alojar más de un dominio desde un solo servidor.
Prerrequisitos
Antes de comenzar esta guía, debe tener configurado en su servidor un usuario normal (no root) con privilegios de sudo. Puede aprender a configurar una cuenta de usuario normal siguiendo nuestra Guía de configuración inicial del servidor para Rocky Linux 8 .
También deberá registrar un nombre de dominio antes de completar los últimos pasos de este tutorial. Para obtener más información sobre cómo configurar un nombre de dominio con IsnHosting, consulte nuestra Introducción al DNS de IsnHosting .
Cuando tenga una cuenta disponible, inicie sesión como usuario no root para comenzar.
Paso 1: Instalación de Nginx
Como Nginx está disponible en los repositorios predeterminados de Rocky, puedes instalarlo con un solo comando, utilizando el dnf
administrador de paquetes.
Instale el nginx
paquete con dnf install
:
sudo dnf install nginx
Cuando se le solicite, presione Enter y
para confirmar que desea instalar nginx
. Después, dnf
se instalarán Nginx y las dependencias necesarias en su servidor.
Una vez finalizada la instalación, ejecute los siguientes comandos para habilitar e iniciar el servidor web:
sudo systemctl enable nginx
sudo systemctl start nginx
Esto hará que Nginx se reinicie automáticamente cada vez que se reinicie el servidor. Su nuevo servidor web ya debería estar en funcionamiento, pero antes de probarlo, probablemente deba modificar la configuración de su firewall.
Paso 2 – Ajuste del firewall
Si habilitó el firewalld
firewall como parte de la guía de configuración inicial del servidor para Rocky Linux 8 , necesitará ajustar la configuración del firewall para permitir conexiones externas en su servidor web Nginx, que se ejecuta en el puerto 80
de manera predeterminada.
Ejecute el siguiente comando para habilitar permanentemente las conexiones HTTP en el puerto 80
:
sudo firewall-cmd --permanent --add-service=http
Para verificar que el http
servicio de firewall se agregó correctamente, puede ejecutar:
sudo firewall-cmd --permanent --list-all
Verás un resultado como este:
Outputpublic
target: default
icmp-block-inversion: no
interfaces:
sources:
services: cockpit dhcpv6-client http ssh
ports:
protocols:
masquerade: no
forward-ports:
source-ports:
icmp-blocks:
rich rules:
Para aplicar los cambios, deberá volver a cargar el servicio de firewall:
sudo firewall-cmd --reload
Su servidor web ahora debería ser accesible para visitantes externos.
Paso 3 – Comprobación de su servidor web
En este punto, su servidor web debería estar en funcionamiento.
Puede utilizar el systemctl status
comando para asegurarse de que el servicio se esté ejecutando:
systemctl status nginx
Output● nginx.service - The nginx HTTP and reverse proxy server
Loaded: loaded (/usr/lib/systemd/system/nginx.service; enabled; vendor preset: disabled)
Active: active (running) since Wed 2022-09-14 21:03:46 UTC; 7min ago
Process: 18384 ExecStartPre=/usr/bin/rm -f /run/nginx.pid (code=exited, status=0/SUCCESS)
Process: 18385 ExecStartPre=/usr/sbin/nginx -t (code=exited, status=0/SUCCESS)
Process: 18386 ExecStart=/usr/sbin/nginx (code=exited, status=0/SUCCESS)
Main PID: 18387 (nginx)
Tasks: 3 (limit: 10938)
Memory: 2.8M
CPU: 43ms
CGroup: /system.slice/nginx.service
├─18387 "nginx: master process /usr/sbin/nginx"
├─18388 "nginx: worker process"
└─18389 "nginx: worker process"
Como lo confirma este resultado, el servicio se ha iniciado correctamente. Sin embargo, la mejor manera de comprobarlo es solicitar una página a Nginx.
Puede acceder a la página de inicio predeterminada de Nginx para confirmar que el software funciona correctamente navegando a la dirección IP de su servidor. Si desconoce la dirección IP de su servidor, puede encontrarla con la herramienta icanhazip.com , que le proporcionará su dirección IP pública, tal como la recibió de otra ubicación en internet:
curl -4 icanhazip.com
Cuando tenga la dirección IP de su servidor, ingrésela en la barra de direcciones de su navegador:
http://your_server_ip
Debería recibir la página de destino predeterminada de Nginx:

Si está en esta página, su servidor está funcionando correctamente y está listo para ser administrado.
Paso 4: Gestión del proceso Nginx
Ahora que tiene su servidor web en funcionamiento, revisemos algunos comandos de administración de servicios.
Para detener su servidor web, utilice systemctl stop
:
sudo systemctl stop nginx
Para iniciar el servidor web cuando esté detenido, utilice systemctl start
:
sudo systemctl start nginx
Para detener y luego reiniciar el servicio, utilice systemctl restart
:
sudo systemctl restart nginx
Si solo realiza cambios de configuración, Nginx suele poder recargarse sin perder conexiones. Para ello, use systemctl reload
:
sudo systemctl reload nginx
Anteriormente en este tutorial, configuraste Nginx para que se inicie automáticamente al arrancar el servidor. Puedes desactivar este comportamiento usando systemctl disable
:
sudo systemctl disable nginx
Para volver a habilitar el servicio para que se inicie durante el arranque, puede escribir:
sudo systemctl enable nginx
Paso 5: Familiarizarse con los archivos y directorios importantes de Nginx
Ahora que sabe cómo administrar el servicio Nginx, debe tomarse unos minutos para familiarizarse con algunos directorios y archivos importantes.
Contenido
/usr/share/nginx/html
El contenido web, que por defecto solo consiste en la página de Nginx predeterminada que vio anteriormente, se sirve desde el/usr/share/nginx/html
directorio. 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 se encuentran aquí./etc/nginx/nginx.conf
El archivo de configuración principal de Nginx. Se puede modificar para realizar cambios en la configuración global de Nginx./etc/nginx/conf.d/
Este directorio contiene los archivos de configuración del bloque de servidor, donde se pueden definir los sitios web alojados en Nginx. Un enfoque típico es tener cada sitio web en un archivo independiente con el nombre de dominio del sitio web, comoyour_domain.conf
.
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.
Ahora debería estar listo para configurar el sitio para alojar uno o más dominios.
Paso 6: Configuración de bloques de servidor (opcional)
Al usar el servidor web Nginx, se pueden usar bloques de servidor.conf
(similares a los hosts virtuales de Apache) para organizar la configuración y alojar más de un dominio desde un solo servidor. En Rocky Linux 9, los bloques de servidor se definen en archivos ubicados en /etc/nginx/conf.d
. Configuraremos un dominio llamadoyour_domain
, pero debes reemplazarlo con tu propio nombre de dominio.
De forma predeterminada, Nginx en Rocky Linux 9 está configurado para servir documentos desde un directorio en [nombre del directorio] /usr/share/nginx/html
. Si bien esto funciona bien para un solo sitio, puede resultar difícil de gestionar si se alojan varios sitios. En lugar de modificar [nombre del directorio] /usr/share/nginx/html
, se creará una estructura de directorios dentro /var/www
del sitio web “your_domain” , dejándolo /usr/share/nginx/html
como directorio predeterminado para servir si la solicitud de un cliente no coincide con ningún otro sitio.
Cree el directorio para su_dominio de la siguiente manera, utilizando la -p
bandera para crear cualquier directorio padre necesario:
sudo mkdir -p /var/www/your_domain/html
A continuación, asigne la propiedad del directorio con la $USER
variable de entorno, que debe hacer referencia a su usuario actual del sistema:
sudo chown -R $USER:$USER /var/www/your_domain/html
Ahora creará una index.html
página de ejemplo para probar la configuración del bloque del servidor. El editor de texto predeterminado de Rocky Linux 9 es [nombre del editor] vi
. vi
Es un editor de texto extremadamente potente, pero puede resultar algo complejo para usuarios sin experiencia. Le recomendamos instalar un editor más intuitivo, como [ nombre del editor], nano
para facilitar la edición de los archivos de configuración en su servidor Rocky Linux 9:
sudo dnf install nano
A continuación, crea una index.html
página de muestra utilizando nano
tu editor favorito:
nano /var/www/your_domain/html/index.html
Dentro, agregue el siguiente HTML de muestra: /var/www/su_dominio/html/index.html
<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>
Guarde y cierre el archivo al terminar. Si usa nano
, puede guardar y salir presionando CTRL + X
, luego, cuando se le solicite, Y
y luego Enter.
Para que Nginx muestre este contenido, deberá crear un bloque de servidor con directivas que apunten a su directorio raíz web personalizado. Cree un nuevo bloque de servidor en :/etc/nginx/conf.d/your_domain.conf
sudo nano /etc/nginx/conf.d/your_domain.conf
Pegue el siguiente bloque de configuración: /etc/nginx/conf.d/su_dominio.conf
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 que hemos actualizado la root
configuración a nuestro nuevo directorio y server_name
a nuestro nombre de dominio. Guarda y cierra el archivo.
Ahora hay dos bloques de servidor habilitados y configurados para responder a solicitudes según sus directivas listen
y server_name
(puede leer más sobre cómo Nginx procesa estas directivas aquí ):
your_domain
:Responderá a las solicitudes deyour_domain
ywww.your_domain
.default
:Responderá a cualquier solicitud en el puerto 80 que no coincida con los otros dos bloques.
A continuación, realice una prueba para asegurarse de que no haya errores de sintaxis en ninguno de sus archivos Nginx, utilizando nginx -t
:
sudo nginx -t
Si no hay ningún problema, reinicie Nginx para habilitar los cambios:
sudo systemctl restart nginx
Antes de poder probar los cambios desde su navegador, deberá actualizar los contextos de seguridad SELinux de su servidor para que Nginx pueda servir contenido desde el directorio./var/www/your_domain
Esta chcon
actualización de contexto permitirá que la raíz de su documento personalizado se sirva como contenido HTTP:
chcon -vR system_u:object_r:httpd_sys_content_t:s0 /var/www/your_domain/
Nginx ya debería estar sirviendo tu nombre de dominio. Puedes comprobarlo navegando a [nombre del dominio] , donde deberías ver algo como esto:http://your_domain
Conclusión
Ahora que tiene su servidor web instalado, tiene muchas opciones para el tipo de contenido que desea servir y las tecnologías que desea utilizar para crear una experiencia más rica.
Para configurar HTTPS para su nombre de dominio con un certificado SSL gratuito usando Let’s Encrypt , debe continuar con Cómo proteger Nginx con Let’s Encrypt en Rocky Linux 8 .