En el mundo del desarrollo web, la búsqueda constante de mejoras en el rendimiento y la eficiencia lleva a los profesionales a explorar diversas configuraciones y arquitecturas de servidor. Una práctica común es colocar Nginx como un proxy inverso delante de un servidor Apache. Esta configuración aprovecha las fortalezas de ambos servidores: la eficiencia de Nginx en el manejo de conexiones estáticas y la flexibilidad de Apache para procesar dinámicamente contenido PHP, por ejemplo. Este artículo proporciona una guía detallada sobre cómo implementar Nginx en frente de un servidor Apache para mejorar el rendimiento de su sitio web.
Por qué Nginx delante de Apache?
Nginx es conocido por su capacidad para manejar un gran número de conexiones simultáneas con un uso eficiente de recursos, lo que lo hace ideal para servir archivos estáticos y manejar el cifrado SSL/TLS. Apache, por otro lado, ofrece una gran flexibilidad con su sistema de módulos y es ampliamente utilizado para aplicaciones que requieren interpretación de lenguajes del lado del servidor como PHP.
La combinación de ambos servidores permite a los desarrolladores aprovechar las ventajas de cada uno, mejorando significativamente el rendimiento y la escalabilidad del sitio web.
Configuración Preliminar
Antes de comenzar, asegúrese de que tanto Nginx como Apache estén instalados en su servidor. Este tutorial asume que Apache ya está configurado y sirviendo su sitio web.
Instalación de Nginx
En sistemas basados en Debian/Ubuntu, puede instalar Nginx con el siguiente comando:
sudo apt update
sudo apt install nginx
Para sistemas basados en CentOS/RHEL:
sudo yum install epel-release
sudo yum install nginx
Configuración de Apache
Primero, cambie el puerto en el que Apache escucha, para evitar conflictos con Nginx, que se configurará para escuchar en el puerto 80 (el puerto HTTP predeterminado).
- Abra el archivo de configuración principal de Apache. En Ubuntu/Debian, este archivo suele estar ubicado en
/etc/apache2/ports.conf
. Cambie la línea que diceListen 80
aListen 8080
o cualquier otro puerto de su elección. - También debe actualizar la configuración de su sitio virtual para reflejar este cambio. En
/etc/apache2/sites-available/000-default.conf
(o el archivo de configuración específico de su sitio), cambie<VirtualHost *:80>
a<VirtualHost *:8080>
. - Reinicie Apache para aplicar los cambios:
sudo systemctl restart apache2
Configuración de Nginx como Proxy Inverso
Ahora, configure Nginx para que actúe como un proxy inverso, reenviando las solicitudes al puerto donde Apache está escuchando.
- Abra o cree un archivo de configuración para su sitio en
/etc/nginx/sites-available/
. Puede nombrarlo como su dominio. - A continuación, un ejemplo de configuración que reenvía las solicitudes a Apache:
server {
listen 80;
server_name su-dominio.com www.su-dominio.com;
location / {
proxy_pass http://localhost: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;
}
}
- Active el sitio creando un enlace simbólico de él en
/etc/nginx/sites-enabled/
y reinicie Nginx:
sudo ln -s /etc/nginx/sites-available/su-dominio.com /etc/nginx/sites-enabled/
sudo systemctl restart nginx
Pruebas y Ajustes
Después de configurar Nginx y Apache correctamente, su sitio web debería ser accesible a través del puerto 80 con Nginx manejando las solicitudes y reenviándolas a Apache en el backend. Es importante probar la configuración para asegurarse de que todo funciona como se espera. Puede hacerlo visitando su dominio en un navegador web.
Servicios de Shape.host
Para aquellos interesados en optimizar aún más el rendimiento de su sitio web, Shape.host ofrece servicios de VPS SSD Linux que pueden complementar perfectamente su configuración de Nginx y Apache. Con una infraestructura robusta y soporte para las tecnologías más recientes, Shape.host es la solución ideal para desarrolladores y empresas que buscan mejorar la velocidad, la seguridad y la fiabilidad de sus aplicaciones web.