Tutorial

Cómo instalar Nginx en CentOS 8

NginxCentOSCentOS 8

Introducción

Nginx es uno de los servidores web más populares del mundo y aloja algunos de los sitios más grandes y con mayor tráfico en Internet. Es más fácil de utilizar que Apache en la mayoría de los casos y puede emplearse como servidor web o proxy inverso.

En esta guía, veremos la manera de instalar Nginx en un servidor de CentOS 8.

Requisitos previos

Para seguir esta guía, necesitará acceso a un servidor CentOS 8 como usuario no root con privilegios sudo y un firewall activo instalado en su servidor. Para configurarlo, siga nuestra Guía de configuración inicial de servidores para CentOS 8.

Paso 1: Instalar el servidor web Nginx

Para instalar Nginx, usaremos el administrador de paquetes dnf, el nuevo administrador de paquetes predeterminado de CentOS 8.

Instale el paquete nginx con:

  • sudo dnf install nginx

Cuando se le solicite, introduzca y para confirmar que desea instalar nginx. Después, dnf instalará Nginx y cualquier dependencia necesaria en su servidor.

Cuando finalice la instalación, ejecute los siguientes comandos para habilitar e iniciar el servidor:

  • sudo systemctl enable nginx
  • sudo systemctl start nginx

Esto hará que Nginx se inicie cuando se cargue el sistema.

Paso 2: Ajustar las reglas del Firewall

En caso de que haya habilitado el firewall firewalld como se indica en nuestra guía de configuración inicial de servidores para CentOS 8, deberá ajustar la configuración del firewall para permitir conexiones externas en su servidor web Nginx, que se ejecuta en el puerto 80 de forma 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 servicio de firewall http se haya añadido correctamente, puede ejecutar lo siguiente:

  • sudo firewall-cmd --permanent --list-all

Verá resultados como este:

Output
public 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

Con esto, su servidor Nginx estará completamente instalado y listo para que sus visitantes externos puedan acceder a él.

Paso 3: Comprobar su servidor web

Ahora puede probar si su servidor web Nginx funciona correctamente accediendo a su dirección IP pública o nombre de dominio desde su navegador web.

Nota: En caso de que utilice DigitalOcean como proveedor de hosting de DNS, puede consultar nuestros documentos sobre productos para hallar instrucciones detalladas sobre cómo configurar un nuevo nombre de dominio y apuntarlo a su servidor.

Si no tiene un nombre de dominio para su servidor y no conoce la dirección IP pública de este, puede encontrarla ejecutando el siguiente comando:

  • ip addr show eth0 | grep inet | awk '{ print $2; }' | sed 's/\/.*$//'

Con esto se mostrarán algunas direcciones IP. Puede probar cada una de estas en su navegador web.

Como alternativa, podrá verificar la dirección IP accesible, como se ve desde otras ubicaciones de Internet:

  • curl -4 icanhazip.com

Escriba la dirección que reciba en su navegador web. Esta lo llevará a la página de destino predeterminada de Nginx:

Página predeterminada de Nginx, CentOS 8

Si ve esta página, su servidor web estará correctamente instalado.

Paso 4: Administrar el proceso de Nginx

Ahora que su servidor web funciona, revisaremos la manera de administrar el servicio de Nginx a través de systemctl.

Siempre que deba detener su servidor web, puede usar lo siguiente:

  • sudo systemctl stop nginx

Para iniciar el servidor web cuando no esté activo, escriba lo siguiente:

  • sudo systemctl start nginx

Para detener y luego iniciar el servicio de nuevo, puede usar lo siguiente:

  • sudo systemctl restart nginx

Nginx puede volver a cargar los cambios en la configuración sin cerrar las conexiones. Para hacer esto, escriba lo siguiente:

  • sudo systemctl reload nginx

De forma predeterminada,Nginx está configurado para iniciarse automáticamente cuando lo haga el servidor. Si no es lo que quiere, deshabilite este comportamiento escribiendo lo siguiente:

  • sudo systemctl disable nginx

Para volver a habilitar el servicio y hacer que Nginx se inicie de nuevo en el arranque, puede usar lo siguiente:

  • sudo systemctl enable nginx

Paso 5: Familiarizarse con archivos y directorios importantes de Ngnix

Ahora que sabe administrar el servicio de Nginx, debería 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 predeterminada de Nginx que vio antes, se presenta desde el directorio /usr/share/nginx/html. Esto se puede cambiar modificando los archivos de configuración de Nginx.

Configuración del servidor

  • /etc/nginx: directorio de configuración de Nginx. En él se encuentran todos los archivos de configuración de Nginx.
  • /etc/nginx/nginx.conf: archivo de configuración principal de Nginx. Esto se puede modificar para realizar cambios en la configuración general de Nginx.
  • /etc/nginx/conf.d/: este directorio contiene los archivos de configuración en bloque del servidor, donde puede definir los sitios web que se alojan en Nginx. Un enfoque típico consiste en tener cada sitio web en un archivo independiente cuyo nombre derive del 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 algo diferente.
  • /var/log/nginx/error.log: cualquier error de Nginx se asentará en este registro.

Paso 6: Configurar bloques de servidor (opcional)

En el caso de que desee alojar varios sitios web en el mismo servidor web de Nginx, deberá configurar bloques de servidor. Los bloques de servidor de Nginx funcionan de forma similar a los hosts virtuales de Apeche, y permiten que un único servidor responda a varios nombres de dominio y presenten contenido diferente para cada uno de ellos. En CentOS 8, los bloques de servidor se definen en los archivos .conf ubicados en /etc/nginx/conf.d.

Crearemos un bloque de servidor para un dominio llamado your_domain. Consulte nuestra Introducción a DNS de DigitalOcean para hallar más información sobre la configuración de un nombre de dominio con DigitalOcean.

Por defecto, Nginx en CentOS 8 está configurado para presentar documentos de un directorio en /usr/share/nginx/html. Si bien esto funciona bien para un solo sitio, puede ser difícil de manejar si aloja varios. En vez de modificar /usr/share/nginx/html, crearemos una estructura de directorios dentro de /var/www para el sitio web your_domain y dejaremos /usr/share/nginx/html como directorio predeterminado que se presentará si un cliente no coincide con otros sitios.

Cree el directorio para your_domain como se muestra a continuación, usando el indicador -p para crear cualquier directorio principal necesario:

  • sudo mkdir -p /var/www/your_domain/html

A continuación, asigne propiedad del directorio con la variable de entorno $USER, que debería hacer referencia a su usuario actual de sistema:

  • sudo chown -R $USER:$USER /var/www/your_domain/html

A continuación, crearemos una página de ejemplo index.html para probar la configuración del bloque de servidor. El editor de texto predeterminado que viene con CentOS 8 es vi. vi es un editor de texto extremadamente potente, pero puede ser un tanto obtuso para los usuarios que carecen de experiencia con él. Posiblemente desee instalar un editor más sencillo, como nano, para facilitar la edición de los archivos de configuración en su servidor de CentOS 8.

  • sudo dnf install nano

Ahora puede usar nano para crear el archivo index.html de ejemplo:

  • nano /var/www/your_domain/html/index.html

Dentro de ese archivo, añada el siguiente código HTML:

/var/www/your_domain/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 cuando termine. Si usó nano, puede hacerlo pulsando CTRL + X, Y y luego ENTER.

Para que Nginx presente este contenido, deberemos crear un bloque de servidor con las directivas correctas que apunten a nuestra raíz web personalizada. Crearemos 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/your_domain.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;
        }
}

Guarde y cierre el archivo cuando termine de editar su contenido.

Para garantizar que no haya errores de sintaxis en ninguno de sus archivos de Nginx, ejecute lo siguiente:

  • sudo nginx -t

Si no hay problemas, verá el siguiente resultado:

Output
nginx: the configuration file /etc/nginx/nginx.conf syntax is ok nginx: configuration file /etc/nginx/nginx.conf test is successful

Una vez superada la prueba de configuración, reinicie Nginx para habilitar sus cambios:

  • sudo systemctl restart nginx

Antes de probar los cambios desde su navegador, deberá actualizar los contextos de seguridad de SELinux de su servidor de modo que Nginx pueda presentar contenido desde el directorio /var/www/your_domain.

El siguiente comando permitirá presentar el root de su documento personalizado como contenido HTTP:

  • chcon -vR system_u:object_r:httpd_sys_content_t:s0 /var/www/your_domain/

Ahora puede probar su configuración de dominio personalizada dirigiéndose a http://your_domain​​, donde verá algo similar a esto:

Bloque de servidor de Nginx

Esta página renderiza el código HTML que hemos definido en la raíz de documento personalizada creada para el bloque de servidor. Si puede ver esta página, significa que su servidor Nginx está correctamente configurado para presentar su dominio.

Conclusión

En esta guía, vimos la manera de instalar y configurar Nginx, un servidor web de alto rendimiento y proxy inverso. Revisamos la manera de administrar el servicio de Nginx que se ejecuta en su servidor y los principales directorios usados por Nginx para almacenar archivos de configuración, contenido y registros.

A partir de este punto, tiene muchas opciones para el tipo de contenido y las tecnologías que posiblemente desee usar en los sitios web alojados en su servidor web.

Creative Commons License