Cómo instalar Nginx en Rocky Linux 8

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 dnfadministrador de paquetes.

Instale el nginxpaquete con dnf install:

sudo dnf install nginx

Cuando se le solicite, presione Enter ypara confirmar que desea instalar nginx. Después, dnfse 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 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 de su 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 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:

Página Nginx predeterminada Rocky Linux 8

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/htmlEl contenido web, que por defecto solo consiste en la página de Nginx predeterminada que vio anteriormente, se sirve desde el /usr/share/nginx/htmldirectorio. Esto se puede cambiar modificando los archivos de configuración de Nginx.

Configuración del servidor

  • /etc/nginxEl directorio de configuración de Nginx. Todos los archivos de configuración de Nginx se encuentran aquí.
  • /etc/nginx/nginx.confEl 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, como your_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/wwwdel sitio web “your_domain” , dejándolo /usr/share/nginx/htmlcomo 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 -pbandera para crear cualquier directorio padre 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 ejemplo para probar la configuración del bloque del servidor. El editor de texto predeterminado de Rocky Linux 9 es [nombre del editor] vi. viEs 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], nanopara 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.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/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, Yy 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 rootconfiguración a nuestro nuevo directorio y server_namea 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 listeny server_name(puede leer más sobre cómo Nginx procesa estas directivas aquí ):

  • your_domain:Responderá a las solicitudes de your_domainy www.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 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

Primer bloque de servidor de Nginx

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 .

Leave a Reply

Your email address will not be published. Required fields are marked *

Related Post