Ahorre 15% en todos los servicios de hosting

Pon a prueba tus habilidades y obtén Descuento<\/span> en cualquier plan de hosting

Usa el código: Skills Comenzar
Secciones
Administración Linux

Instalación y Configuración de Nginx en CentOS 7: Una Guía Completa Paso a Paso

Nginx es uno de los servidores web de código abierto más potentes y ampliamente adoptados del mundo. Conocido por su rendimiento excepcional, bajo consumo de memoria y capacidad para manejar miles de conexiones simultáneas, Nginx es la solución preferida para servir contenido estático, actuar como proxy inverso y realizar equilibrio de carga en sistemas distribuidos.

Ya sea que estés ejecutando un blog personal, una plataforma de comercio electrónico de alto tráfico o una arquitectura compleja de microservicios, Nginx ofrece la velocidad y confiabilidad que tus usuarios demandan. Esta guía completa te guía a través de cada paso de la instalación, configuración, seguridad y optimización de Nginx en un servidor CentOS 7 — desde la preparación inicial del sistema hasta habilitar HTTPS con un certificado SSL gratuito de Let's Encrypt.

> Requisitos previos: Un servidor CentOS 7 con acceso root o sudo. Si necesitas un entorno confiable y de alto rendimiento para seguir adelante, considera explorar Alojamiento VPS de AlexHost — diseñado específicamente para cargas de trabajo exigentes con acceso root completo y almacenamiento SSD.

Paso 1: Actualizar tu Sistema

Antes de instalar cualquier software nuevo, es crítico asegurar que tu sistema CentOS 7 esté completamente actualizado. Los paquetes desactualizados pueden introducir vulnerabilidades de seguridad y conflictos de dependencias que complican el proceso de instalación.

Abre tu terminal y ejecuta el siguiente comando:

sudo yum update -y

Este comando actualiza todos los paquetes instalados a sus versiones más recientes disponibles. La bandera -y confirma automáticamente todos los mensajes, haciendo que el proceso sea no interactivo. Permite que la actualización se complete completamente antes de continuar.

Paso 2: Instalar Nginx mediante YUM

Nginx no está disponible en los repositorios base predeterminados de CentOS 7. Primero debe instalar el repositorio EPEL (Extra Packages for Enterprise Linux), que proporciona una amplia gama de paquetes de software adicionales para distribuciones basadas en RHEL.

Instalar el repositorio EPEL:

sudo yum install epel-release -y

Instalar Nginx:

sudo yum install nginx -y

Este comando descarga e instala Nginx junto con todas las dependencias requeridas. Una vez que se complete la instalación, puede verificar la versión instalada con:

nginx -v

Debería ver una salida similar a:

nginx version: nginx/1.20.x

Paso 3: Iniciar y habilitar el servicio Nginx

Con Nginx instalado, necesitas iniciar el servicio y configurarlo para que se lance automáticamente cada vez que el servidor se reinicie.

Inicia el servicio Nginx:

sudo systemctl start nginx

Habilita Nginx para que se inicie al arrancar:

sudo systemctl enable nginx

Verifica el estado del servicio para confirmar que se está ejecutando:

sudo systemctl status nginx

Deberías ver una salida indicando que el servicio está activo (en ejecución):

● nginx.service - The nginx HTTP and reverse proxy server
   Loaded: loaded (/usr/lib/systemd/system/nginx.service; enabled; ...)
   Active: active (running) since ...

Si el servicio no se inicia, revisa los registros de errores en /var/log/nginx/error.log para obtener información de diagnóstico.

Paso 4: Configurar el Firewall

CentOS 7 utiliza firewalld como su herramienta predeterminada de gestión de firewall. Por defecto, el tráfico HTTP (puerto 80) y HTTPS (puerto 443) están bloqueados. Debe abrir explícitamente estos puertos para permitir que el tráfico web llegue a su servidor Nginx.

Permitir tráfico HTTP:

sudo firewall-cmd --permanent --add-service=http

Permitir tráfico HTTPS:

sudo firewall-cmd --permanent --add-service=https

Recargar el firewall para aplicar los cambios:

sudo firewall-cmd --reload

Verificar las reglas activas:

sudo firewall-cmd --list-all

Debería ver tanto http como https listados bajo la sección services de la salida. Si su servidor está alojado detrás de un firewall externo o grupo de seguridad (común con proveedores en la nube), asegúrese de que esas reglas también se actualicen para permitir tráfico en los puertos 80 y 443.

Paso 5: Verificar la Instalación

Para confirmar que Nginx está instalado correctamente y sirviendo contenido, abre un navegador web y navega a la dirección IP pública de tu servidor:

http://your_server_ip

Deberías ver la página de bienvenida predeterminada de Nginx, que muestra el mensaje *"Welcome to nginx!"*. Esto confirma que el servidor web está operativo y accesible desde internet.

Si no ves la página de bienvenida, verifica lo siguiente:

  • El servicio Nginx está en ejecución (sudo systemctl status nginx)
  • Las reglas del firewall se aplican correctamente
  • La dirección IP de tu servidor es correcta
  • Ningún otro servicio (como Apache) está ocupando el puerto 80

Paso 6: Configurar bloques de servidor Nginx

Nginx utiliza bloques de servidor (funcionalmente equivalentes a los hosts virtuales de Apache) para definir cómo maneja las solicitudes de diferentes dominios o subdominios. Cada bloque de servidor se almacena típicamente como un archivo de configuración separado dentro del directorio /etc/nginx/conf.d/.

El archivo de configuración principal de Nginx se encuentra en /etc/nginx/nginx.conf. Incluye una directiva que carga automáticamente todos los archivos .conf del directorio conf.d, manteniendo tu configuración modular y fácil de administrar.

Paso 6a: Crear un nuevo archivo de configuración de bloque de servidor

Crea un nuevo archivo de configuración para tu dominio. Reemplaza example.com con el nombre de tu dominio real:

sudo nano /etc/nginx/conf.d/example.com.conf

Añade la siguiente configuración de bloque de servidor:

server {
    listen 80;
    server_name example.com www.example.com;

    root /var/www/example.com/html;
    index index.html index.htm index.php;

    # Logging
    access_log /var/log/nginx/example.com.access.log;
    error_log  /var/log/nginx/example.com.error.log;

    location / {
        try_files $uri $uri/ =404;
    }

    # Deny access to hidden files
    location ~ /. {
        deny all;
    }
}

Directivas clave explicadas:

DirectivaDescripción
listen 80Instruye a Nginx para escuchar conexiones entrantes en el puerto 80 (HTTP)
server_nameDefine los nombres de dominio a los que responde este bloque de servidor
rootEspecifica el directorio raíz del documento donde se almacenan los archivos del sitio web
indexDefine los archivos predeterminados que Nginx servirá cuando se solicite un directorio
try_filesIntenta servir el URI solicitado como archivo, luego como directorio, y devuelve un 404 si ninguno existe
access_log / error_logDefine archivos de registro separados para este host virtual para facilitar la depuración

Guarda el archivo y sal del editor (Ctrl+X, luego Y, luego Enter en nano).

Paso 7: Crear la raíz del documento y archivo de prueba

Crea el directorio raíz del documento que definiste en la configuración del bloque del servidor:

sudo mkdir -p /var/www/example.com/html

Crea un archivo index.html simple para verificar que el bloque del servidor funciona correctamente:

echo "<h1>Welcome to Example.com — Powered by Nginx on CentOS 7!</h1>" | sudo tee /var/www/example.com/html/index.html

Establece la propiedad y los permisos correctos para que Nginx pueda leer los archivos:

sudo chown -R nginx:nginx /var/www/example.com/
sudo chmod -R 755 /var/www/example.com/

> Nota sobre SELinux: CentOS 7 viene con SELinux habilitado de forma predeterminada. Si Nginx no puede leer tus archivos web incluso con permisos correctos, es posible que debas aplicar el contexto SELinux apropiado:

> “`bash

> sudo chcon -Rt httpd_sys_content_t /var/www/example.com/

> “`

Paso 8: Probar la configuración de Nginx

Antes de reiniciar Nginx para aplicar tu nueva configuración, siempre prueba si hay errores de sintaxis. Un archivo mal configurado puede derribar todo tu servidor web.

Ejecuta la prueba de configuración:

sudo nginx -t

Una prueba exitosa produce el siguiente resultado:

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

Si se reportan errores, revisa cuidadosamente los números de línea indicados en tus archivos de configuración y corrige cualquier problema antes de continuar.

Reinicia Nginx para aplicar los cambios:

sudo systemctl restart nginx

Alternativamente, si deseas recargar la configuración sin interrumpir las conexiones activas (recomendado para entornos de producción), usa:

sudo systemctl reload nginx

Ahora navega a tu dominio en un navegador. Deberías ver tu página index.html personalizada.

Paso 9: Configurar HTTPS con Let’s Encrypt

Ejecutar un sitio web sobre HTTP simple expone a tus usuarios a posibles eavesdropping y ataques man-in-the-middle. Asegurar tu sitio con HTTPS ya no es opcional — es un requisito fundamental para la confianza del usuario, la integridad de datos y el ranking en motores de búsqueda.

Let’s Encrypt proporciona certificados SSL/TLS gratuitos, automatizados y confiables. También puedes explorar Certificados SSL premium de AlexHost para validación extendida y opciones validadas por organización que ofrecen niveles más altos de confianza para sitios web empresariales.

Instalar Certbot y el Plugin de Nginx

sudo yum install certbot python2-certbot-nginx -y

Obtener e Instalar el Certificado SSL

Ejecuta Certbot con el plugin --nginx, que modifica automáticamente tu configuración de Nginx para habilitar HTTPS:

sudo certbot --nginx -d example.com -d www.example.com

Sigue los prompts interactivos:

  1. Ingresa tu dirección de correo electrónico para notificaciones de renovación
  2. Acepta los Términos de Servicio de Let’s Encrypt
  3. Elige si redirigir el tráfico HTTP a HTTPS (fuertemente recomendado — selecciona la opción 2)

Certbot automáticamente:

  • Obtiene un certificado firmado de Let’s Encrypt
  • Modifica tu /etc/nginx/conf.d/example.com.conf para incluir directivas SSL
  • Configura un redireccionamiento de HTTP a HTTPS

Después de completar, verifica la configuración de HTTPS visitando:

https://example.com

Tu navegador debe mostrar un icono de candado, confirmando que la conexión está encriptada.

Paso 10: Automatizar la Renovación de Certificados

Los certificados de Let's Encrypt son válidos por 90 días. No renovarlos antes de su vencimiento hará que tu sitio muestre advertencias de seguridad a los visitantes, impactando severamente la confianza del usuario y el tráfico.

Prueba el Proceso de Renovación

Antes de configurar la automatización, verifica que el proceso de renovación funcione correctamente:

sudo certbot renew --dry-run

Una ejecución de prueba exitosa confirma que la renovación automática funcionará sin problemas.

Configura un Trabajo Cron para la Renovación Automática

Abre el crontab de root:

sudo crontab -e

Añade la siguiente línea para verificar y renovar certificados dos veces al día (la frecuencia recomendada):

0 0,12 * * * /usr/bin/certbot renew --quiet --post-hook "systemctl reload nginx"

Explicación del cronograma cron:

    0 0,12 * * * — Se ejecuta a medianoche y al mediodía todos los días
    --quiet — Suprime la salida a menos que ocurra un error
    --post-hook "systemctl reload nginx" — Recarga Nginx después de una renovación exitosa para aplicar el nuevo certificado sin tiempo de inactividad
    
    Guarda y sal del editor de crontab. Tus certificados SSL se renovarán automáticamente, manteniendo tu sitio seguro sin ninguna intervención manual.
    Consejos de Optimización de Rendimiento para Nginx en CentOS 7
    Una vez que tu configuración básica esté completa, considera estas mejoras de configuración para maximizar el rendimiento de Nginx:
    Habilitar Compresión Gzip
    Añade lo siguiente a tu nginx.conf dentro del bloque http {} para reducir el tamaño de las respuestas enviadas a los clientes:
    gzip on;
    gzip_vary on;
    gzip_min_length 1024;
    gzip_proxied expired no-cache no-store private auth;
    gzip_types text/plain text/css text/xml text/javascript application/javascript application/xml+rss application/json;
    Configurar Almacenamiento en Caché del Navegador
    Añade encabezados de control de caché para activos estáticos para reducir la carga del servidor y mejorar los tiempos de carga de la página:
    location ~* .(jpg|jpeg|png|gif|ico|css|js|woff|woff2)$ {
        expires 30d;
        add_header Cache-Control "public, no-transform";
    }
    Ajustar Procesos de Trabajo
    En /etc/nginx/nginx.conf, establece el número de procesos de trabajo para que coincida con el número de núcleos de CPU de tu servidor:
    worker_processes auto;
    worker_connections 1024;
    > Para aplicaciones que requieren muchos recursos o sitios web con mucho tráfico, considera actualizar a Servidores Dedicados de AlexHost, que proporcionan recursos garantizados de CPU, RAM y almacenamiento sin efectos de vecino ruidoso.
    Gestión de múltiples sitios web con Nginx
    Una de las mayores fortalezas de Nginx es su capacidad de alojar múltiples sitios web en un único servidor a través de bloques de servidor. Para cada dominio adicional, simplemente:
    
    Crea un nuevo .conf archivo en /etc/nginx/conf.d/
  • Define una directiva server_name única
  • Apunta la directiva root a la raíz de documentos apropiada
  • Ejecuta sudo nginx -t y sudo systemctl reload nginx
  • Si prefieres una interfaz gráfica para gestionar tu servidor web, hosts virtuales, bases de datos y cuentas de correo, considera VPS con cPanel — una solución de panel de control completamente administrada que simplifica la administración del servidor sin sacrificar la flexibilidad.

    Alternativamente, explora la gama completa de Paneles de control VPS disponibles en AlexHost, incluyendo Plesk, DirectAdmin y otras opciones adaptadas a diferentes flujos de trabajo y preferencias técnicas.

    Solución de problemas comunes de Nginx en CentOS 7

    ProblemaCausa probableSolución
    Nginx no iniciaPuerto 80/443 ya en usoEjecuta `sudo ss -tlnpgrep :80` para identificar el proceso conflictivo
    Error 403 ForbiddenPermisos de archivo incorrectos o contexto SELinuxVerifica chmod/chown y aplica chcon para SELinux
    502 Bad GatewayBackend upstream (PHP-FPM, Node.js) no está ejecutándoseVerifica que el servicio backend esté activo y que el socket/puerto sea correcto
    Certificado SSL no se renuevaCertbot no puede vincularse al puerto 80Asegúrate de que el puerto 80 esté abierto y ningún otro proceso lo bloquee
    Los cambios no surten efectoConfiguración no recargadaEjecuta sudo systemctl reload nginx después de cada cambio de configuración

    Conclusión

    Ahora ha instalado, configurado y asegurado exitosamente Nginx en CentOS 7. Su servidor está listo para alojar sitios web con alto rendimiento, manejar conexiones concurrentes de manera eficiente y servir contenido sobre conexiones HTTPS encriptadas — todas cualidades esenciales para un entorno web moderno de grado de producción.

    Aquí hay un resumen de lo que se logró:

    • ✅ Actualizó el sistema CentOS 7 e instaló Nginx a través del repositorio EPEL
    • ✅ Inició y habilitó el servicio Nginx para inicio automático al arrancar
    • ✅ Configuró firewalld para permitir tráfico HTTP y HTTPS
    • ✅ Creó y configuró un bloque de servidor personalizado para un dominio
    • ✅ Estableció permisos de archivo correctos y contextos SELinux para la raíz del documento
    • ✅ Probó la configuración para errores de sintaxis antes de aplicar cambios
    • ✅ Aseguró el sitio con un certificado SSL gratuito de Let's Encrypt a través de Certbot
    • ✅ Automatizó la renovación de certificados con un trabajo cron

    Mantener un servidor web seguro y de alto rendimiento requiere atención continua. Mantenga Nginx actualizado regularmente, monitoree sus registros de acceso y error, y revise su configuración a medida que los requisitos de su sitio evolucionen.

    Si está buscando una base de alojamiento robusta para sus proyectos impulsados por Nginx, AlexHost ofrece un espectro completo de soluciones — desde Alojamiento Web Compartido de nivel de entrada para sitios más pequeños hasta VPS de alto rendimiento e infraestructura dedicada para aplicaciones exigentes. Cada plan está respaldado por hardware de grado empresarial, soporte técnico 24/7 y un compromiso con el tiempo de actividad y la seguridad.