Cómo configurar Nginx como servidor web y proxy inverso para Apache en CentOS 8

Como sabes, tanto Apache como Nginx son servidores web gratuitos, de código abierto y potentes en todo el mundo. Apache es conocido por su potencia mientras que Nginx es conocido por su velocidad. Ambos tienen algunos inconvenientes y ventajas. Nginx utiliza PHP-FPM para cargar los archivos PHP mientras que Apache carga PHP por sí mismo. Apache se utiliza para la parte dinámica del sitio web mientras que Nginx sirve archivos estáticos como gráficos, CSS y archivos js.

Es una buena idea utilizar ambos en un mismo servidor y obtener beneficios de ambos. En este tutorial, te mostraremos cómo utilizar Nginx como servidor web y proxy inverso para el servidor web Apache en CentOS 8.

Requisitos previos

  • Un servidor con CentOS 8.
  • Un nombre de dominio apuntado con la IP de tu servidor.
  • Una contraseña de root configurada el servidor.

Instalar Apache y PHP

En primer lugar, tendrás que instalar el servidor web Apache y PHP en tu servidor. Puedes instalarlo con el siguiente comando:

dnf install httpd php php-cli -y

Una vez terminada la instalación, inicia el servicio Apache y habilítalo para que se inicie al reiniciar el sistema con el siguiente comando:

systemctl start httpd
systemctl enable httpd

Configurar el servidor web Apache

Por defecto, el servidor web Apache escucha en el puerto 80. Por tanto, tendrás que configurar el servidor web Apache para que escuche en el puerto 8080. Puedes hacerlo editando el archivo principal de configuración de Apache:

nano /etc/httpd/conf/httpd.conf

Cambia el puesto 80 por el 8080 como se muestra a continuación:

Listen 8080

Guarda y cierra el archivo y luego reinicia el servicio Apache para aplicar los cambios:

systemctl restart httpd

A continuación, comprueba el puerto de escucha de Apache con el siguiente comando:

ss -antpl | grep httpd

Deberías obtener la siguiente salida:

LISTEN    0         128                      *:8080                   *:*        users:(("httpd",pid=1693,fd=4),("httpd",pid=1692,fd=4),("httpd",pid=1691,fd=4),("httpd",pid=1688,fd=4))

A continuación, crea un archivo info.php dentro del directorio raíz de la web de Apache:

nano /var/www/html/info.php

Añade la siguiente línea:

<?php phpinfo(); ?>

Guarda y cierra el archivo cuando hayas terminado.

A continuación, abre tu navegador web y accede a la URL http://your-server-ip:8080/info.php. Deberías ver la siguiente página:

Información PHP

Instalar el servidor web Nginx

A continuación, tendrás que instalar el paquete Nginx en tu servidor. Puedes instalarlo con el siguiente comando:

dnf install nginx -y

Una vez instalado Nginx, inicia el servicio Nginx y habilítalo para que se inicie al reiniciar el sistema con el siguiente comando:

systemctl start nginx
systemctl enable nginx

Configurar Nginx como proxy inverso para Apache

Ahora tendrás que configurar el Nginx como proxy inverso para que reenvíe todas las peticiones que lleguen por el puerto 80 al servidor web Apache, que está escuchando en el puerto 8080.

En primer lugar, crea un nuevo archivo de configuración del host virtual Nginx con el siguiente comando:

nano /etc/nginx/conf.d/proxy.conf

Añade las siguientes líneas:

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

    location ~ \.php$ {
        proxy_pass http://your-server-ip:8080;
        proxy_set_header Host $host;
        proxy_set_header X-Real-IP $remote_addr;
        proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
        proxy_set_header X-Forwarded-Proto $scheme;
    }
}

Guarda y cierra el archivo cuando hayas terminado. A continuación, reinicia el servidor web Nginx para aplicar los cambios:

systemctl restart nginx

Ahora, abre tu navegador web y accede a la URL http://test.example.com/info.php. Deberías ver la siguiente página:

Información de PHP a través del proxy inverso

Como puedes ver, el servidor web Nginx sirve a PHP.

Conclusión

En la guía anterior, has aprendido a configurar Nginx como servidor web y proxy inverso para Apache. Espero que esto te ayude a aumentar el rendimiento de tu sitio web.

También te podría gustar...