LinuxParty
¿Por qué correr Apache y Nginx juntos?
Tanto Nginx como Apache son dos servidores web potentes y eficaces. Apache es el servidor que más usado actualmente, Nginx, desde su lanzamiento público en 2006, es ahora el segundo servidor web más usado. Las razones de la popularidad de cada respectivo servidor son claras: el poder de Apache y velocidad de nginx son bien conocidos. Sin embargo, ambos servidores tienen inconvenientes: Apache consume demasiada memoria del servidor, mientras que Nginx necesita la ayuda de php-FPM o módulos similares para servir contenido dinámico.
Sin embargo, podemos combinar los dos servidores para conseguir el máximo rendimiento, con Nginx como servidor estático en el front-end y Apache se encargará del procesamiento dinámico en backend.
Requerimiento inicial.
Para llevar a cabo los pasos de este tutorial, debes tener privilegios de sudo en tu VPS.
Instalando Nginx.
Para empezar, tenemos que instalar y configurar Nginx que servirá el front-end de nuestro sitio.
Vamos a descargarlo e instalarlo desde apt-get o yum:
(Sistemas basados en Debian)
sudo apt-get install nginx
(Sistemas basados en RedHat)sudo yum -y install nginx
Una vez que se ha descargado e instalado ya podemos seguir con el siguiente paso.
Configuración de Nginx.
Abre la configuración de Nginx.
sudo nano /etc/nginx/sites-available/example
La siguiente configuración permitirá usar Nginx como servidor front-end. Es muy similar a la configuración por defecto, y los detalles se encuentran bajo la configuración.
server { listen 80; root /var/www/; index index.php index.html index.htm; server_name ejemplo.com; location /{ try_files $uri $uri//index.php;} location ~ \.php$ { proxy_set_header X-Real-IP $remote_addr; proxy_set_header X-Forwarded-For $remote_addr; proxy_set_header Host $host; proxy_pass http://127.0.0.1:8080;} location ~/\.ht { deny all;}}
Los siguientes cambios han sido implementados en la configuración:
- Cambiamos la raíz ( root) por el directorio correcto de la Web.
- Añadimos index.php a la línea de índice ( index ).
- try_files intentará de servir cualquier página solicitada por los visitantes. Si nginx no puede servirla, el archivo se pasa al proxy.
- PROXY_PASS indica a Nginx la dirección del servidor proxy.
- Por último, el bloque de localización “location ~ /\.ht {” deniega el acceso a los ficheros . htaccess, si la raíz ( document root ) de Apache concuerda con la de Nginx.
Esta configuración establece un sistema por el cual todas las peticiónes con un final .php se redireccionan al backend Apache que está corriendo en el puerto 8080.
Ahora debes activar el VirtualHost:
sudo ln -s /etc/nginx/sites-available/example /etc/nginx/sites-enabled/example
Además, debes eliminar sitio que Nginx trae por defecto:
(puede hacer si quiere un archivo comprimido antes de borrarlo)
(opcionalmente) tar cvfz nginx-default.tgz /etc/nginx/sites-enable/default
sudo rm /etc/nginx/sites-enabled/default
El siguiente paso es instalar y configurar Apache.
Instalar Apache.
Una vez hemos acabado con la parte de Nginx, es el momento de instalar nuestro backend, Apache.
(Sistemas basados en Debian)
sudo apt-get install apache2
(Sistemas basados en RedHat)
sudo yum -y install httpd
Puesto que nginx todavía no está activado, Apache comenzará a funcionar en el puerto 80.
Configurar Apache.
Necesitamos configurar apache para que pueda hacerse cargo del backend, que como ya le indicamos a Nginx, nuestro proxy deberá estar corriendo en el puerto 8080. Debemos abrir el fichero ports.conf de Apache para indicar el puerto correcto:
sudo nano /etc/apache2/ports.conf
sudo nano /etc/httpd/httpd.conf
Busca y cambia las siguientes líneas para tener Apache corriendo en el puerto 8080, y accesible sólo desde el localhost:
<VirtualHost 127.0.0.1:8080>
...
Listen 127.0.0.1:8080
...
Guarda y sal.
Posteriormente, abre un nuevo archivo de Virtual Host, copiando el diseño del que trae apache por defecto:
sudo cp /etc/apache2/sites-available/default/etc/apache2/sites-available/ejemplo sudo nano /etc/apache2/sites-available/ejemplo
El principal problema que debemos solucionar aquí es que el Virtual Host tiene que estar, una vez más, ejecutándose en el puerto 8080 (en lugar del predeterminado 80).
La línea debe tener este aspecto:
Asegúrate de que la raíz (Document Root) es la correcta. Guarda y sal del archivo y activa el Virtual Host:
sudo a2ensite ejemplo
Antes de empezar a probar nada, tenemos que equipar a Apache con PHP. Vamos a instalarlo:
sudo apt-get install php[x]
Siendo X, la versión de PHP correspondiente, por ejemplo php7 o php8...
Reinicia ambos servidores para que los cambios surtan efecto:
sudo service apache2 restart (debian/ubuntu)
sudo service httpd restart (redhat/fedora/almalinux...)
sudo service nginx restart
Finalizando.
Ya tenemos listo nuestro VPS ( o servidor dedicado ) con Nginx ejecutandose como front-end de nuestro sitio y con el procesamiento de Apache + PHP como back-end. Si abrimos nuestro dominio nos llevará a la página por defecto de nuestro sitio.
Podemos comprobar que la información está siendo enviada a Apache de forma correcta mediante la ejecución de un script php común.
Vamos a crear el archivo php.info:
sudo service apache2 restart sudo nano /var/www/info.php
Pega las siguientes líneas en el archivo:
sudo service apache2 restart <? phpinfo();?>
Guarda y sal.
Visita a tu dominio/info.php y deberás ver la pantalla PHP info, podrás observar que fue servida con Apache.
Conclusiones.
Configurar Nginx y Apache juntos puede ser un gran impulso para tu servidor y para tu sitio web. Esto solo ha sido una breve introducción pero se puede afinar todo mucho más para aumentar el rendimiento con creces.
Basado en un artículo de OpenWibnars

-
UnionEuropea
- Google no añadirá comprobaciones de datos a pesar de la nueva ley de la UE
- La UE firma un acuerdo de 1.000 millones de dólares para una constelación de satélites soberanos para competir con Starlink
- ¿Puede la UE responsabilizar a los fabricantes de software por negligencia?
- La Identidad Digital de la UE: Todo lo que necesitas saber sobre los planes de la UE para un sistema de identidad digital universal
- Las perspectivas económicas de Europa empeoran a medida que los altos precios afectan el gasto del consumidor
- La UE nombra 19 grandes plataformas tecnológicas que deben seguir las nuevas reglas de Internet de Europa
- El código abierto ( y Linux ) se ve amenazado por la Ley de Resiliencia Cibernética
- La Unión Europea prepara DNS4EU, quiere sus propios DNS ¿independencia tecnológica o Censura Encubierta?
- Asesor del Tribunal Superior de la UE sugiere que la ley alemana de retención de datos a granel no es legal
- La Comisión Europea ha decidido que lo que se negocie por WhatsApp es Irrelevante
- Todos los partidos «Constitucionalistas» votaron a favor del Art. 13 y en contra del Sentido Común.
- Google implementará elegir el navegador al estilo Microsoft para dispositivos Android en la UE
- El artículo 13 del Copyright en la UE está de vuelta. Y lejos de mejorar va a peor.
- Google News podrían cerrarse en algunos países debido a los planes de la UE de cobrar impuestos por los enlaces
- Reguladores de la U.E. fijan una multa record a Google de 5 mil millones de dólares