Introducción
Nginx es uno de los servidores web más populares del mundo y es responsable de alojar algunos de los sitios más grandes y con mayor tráfico de Internet. Es una opción liviana que se puede utilizar como servidor web o 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 con esta guía, debe tener un usuario regular, no root, con privilegios sudo configurados en su servidor. Puede aprender a configurar una cuenta de usuario regular siguiendo nuestra Guía de configuración inicial del servidor para Rocky Linux 8 .
También es posible que desees haber registrado 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 DigitalOcean, consulta nuestra Introducción a DigitalOcean DNS .
Cuando tenga una cuenta disponible, inicie sesión como usuario no root para comenzar.
Paso 1 – Instalación de Nginx
Dado que Nginx está disponible en los repositorios predeterminados de Rocky, puedes instalarlo con un solo comando, utilizando el dnfadministrador de paquetes.
Instale el nginxpaquete con dnf install:
- sudo dnf install nginx
Cuando se le solicite, ingrese ypara confirmar que desea instalar nginx. Luego, dnfse instalarán Nginx y todas las dependencias requeridas 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. El nuevo servidor web ya debería estar en funcionamiento, pero antes de probarlo, probablemente deba realizar un cambio en la configuración del firewall.
Paso 2 – Ajuste del firewall
Si habilitó el firewalldfirewall 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 80de 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 httpservicio 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 del servidor web
En este punto, su servidor web debería estar en funcionamiento.
Puede utilizar el systemctl statuscomando 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 forma 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 se está ejecutando correctamente navegando hasta la dirección IP de su servidor. Si no conoce la dirección IP de su servidor, puede encontrarla utilizando la herramienta icanhazip.com , que le proporcionará su dirección IP pública tal como la recibió desde 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 reiniciar el servicio, utilice systemctl restart:
- sudo systemctl restart nginx
Si solo realiza cambios de configuración, Nginx puede volver a cargarse sin interrumpir las conexiones. Para ello, utilice systemctl reload:
- sudo systemctl reload nginx
Anteriormente en este tutorial, configuraste Nginx para que se inicie automáticamente cuando se inicia 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 real, que por defecto solo consta de la página Nginx predeterminada que viste antes, se entrega desde el/usr/share/nginx/htmldirectorio. 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. Puede modificarse para realizar cambios en la configuración global de Nginx./etc/nginx/conf.d/:Este directorio contiene archivos de configuración de bloques de servidor, donde puede definir los sitios web alojados en Nginx. Un enfoque típico es tener cada sitio web en un archivo separado que lleva el nombre del 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 utilizar el servidor web Nginx, se pueden utilizar bloques de servidor.conf (similares a los hosts virtuales en Apache) para organizar los detalles de 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 manera predeterminada, Nginx en Rocky Linux 9 está configurado para servir documentos desde un directorio en /usr/share/nginx/html. Si bien esto funciona bien para un solo sitio, puede volverse inmanejable si está alojando varios sitios. En lugar de modificar /usr/share/nginx/html, creará una estructura de directorio dentro /var/wwwpara el sitio web your_domain , dejando /usr/share/nginx/htmlen su lugar el directorio predeterminado que se servirá si una solicitud de cliente no coincide con ningún otro sitio.
Cree el directorio para su_dominio de la siguiente manera, utilizando el -pindicador para crear cualquier directorio principal necesario:
- sudo mkdir -p /var/www/your_domain/html
A continuación, asigne la propiedad del directorio con la $USERvariable 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.htmlpágina de muestra para probar la configuración del bloque del servidor. El editor de texto predeterminado que viene con Rocky Linux 9 es vi. vies un editor de texto extremadamente potente, pero puede resultar algo obtuso para los usuarios que no tienen experiencia con él. Es posible que desee instalar un editor más fácil de usar, como por ejemplo nanopara facilitar la edición de archivos de configuración en su servidor Rocky Linux 9:
- sudo dnf install nano
A continuación, crea una index.htmlpágina de muestra utilizando nanotu editor favorito:
- nano /var/www/your_domain/html/index.html
Dentro, agregue el siguiente HTML de muestra:
/var/www/tu_dominio/html/index.html
html head titleWelcome to your_domain/title /head body h1Success! Your Nginx server is successfully configured for emyour_domain/em. /h1pThis is a sample page./p /body/html
Guarde y cierre el archivo cuando haya terminado. Si está utilizando nano, puede guardar y salir presionando CTRL + X, luego cuando se le solicite Yy luego Enter.
Para que Nginx sirva este contenido, deberá crear un bloque de servidor con directivas que apunten a su raíz web personalizada. 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/tu_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; }}
Ten en cuenta que hemos actualizado la rootconfiguración a nuestro nuevo directorio y a server_namenuestro nombre de dominio. Guarda y cierra el archivo.
Ahora hay dos bloques de servidor habilitados y configurados para responder a solicitudes basadas en sus directivas listeny server_name(puede leer más sobre cómo Nginx procesa estas directivas aquí ):
your_domain:Responderá a las solicitudes deyour_domainywww.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 chconactualizació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 debería ahora servir a tu nombre de dominio. Puedes comprobarlo navegando a , 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 .