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.
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.
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.
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:
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
Con esto, su servidor Nginx estará completamente instalado y listo para que sus visitantes externos puedan acceder a él.
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:
Si ve esta página, su servidor web estará correctamente instalado.
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
Ahora que sabe administrar el servicio de Nginx, debería tomarse unos minutos para familiarizarse con algunos directorios y archivos importantes.
/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./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
./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.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:
<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:
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:
Outputnginx: 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:
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.
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.
Thanks for learning with the DigitalOcean Community. Check out our offerings for compute, storage, networking, and managed databases.
This textbox defaults to using Markdown to format your answer.
You can type !ref in this text area to quickly search our full set of tutorials, documentation & marketplace offerings and insert the link!