Apache es el servidor web más popular, capaz de operar en una gran cantidad de sistemas operativos, incluidos UNIX/Linux, Microsoft Windows y OpenVMS.
NGINX es un servidor web de alto rendimiento utilizado en particular para archivos estáticos y como proxy inverso, pero gracias a su versatilidad se puede utilizar en cualquier tipo de situación.
En este tutorial descubriremos cómo emplear las fortalezas de ambos servidores web haciéndolos cooperar en perfecta armonía. NGINX se usará como un servidor web frontend que manejará las solicitudes de los clientes y las enviará a Apache, que será nuestro servidor web backend y devolverá la respuesta solicitada. Este procedimiento permite obtener varios beneficios desde el rendimiento hasta la seguridad.
Primero, conéctese a su servidor a través de una conexión SSH. Si aún no lo ha hecho, se recomienda seguir nuestra guía para conectarse de forma segura con SSH. En caso de un servidor local, vaya al siguiente paso y abra la terminal de su servidor.
Instalación y configuración de Apache
Actualice los repositorios de la distribución Ubuntu Linux, para asegurarse de descargar la última versión de Apache:
$ sudo apt-get update
Luego, inicie la instalación:
$ sudo apt install apache2
En este punto, la instalación de Apache está completa y es posible continuar con su configuración.
Cambie el puerto usado por defecto por Apache a 8080. Para hacer esto, abra el archivo de configuración como se muestra:
$ sudo nano /etc/apache2/ports.conf
Encuentre la línea Listen 80 y cámbiela a Listen 8080, luego guarde y cierre el archivo.
Reiniciar el servicio Apache:
$ sudo systemctl restart apache2
Para comprobar el cambio de puerto Apache visite http://
Instalación y Configuración de NGINX
Continúe iniciando la instalación de NGINX:
$ sudo apt-get install nginx
Una vez completada la instalación, abra el archivo de configuración de NGINX como se muestra:
$ sudo nano /etc/nginx/nginx.conf
Luego, edite o agregue el bloque del servidor como se muestra aquí para usar NGINX como un servidor proxy Apache:
server {
listen 80;
root /var/www/html;
index index.php index.html index.htm;
server_name SERVER_IP;
location / {
proxy_pass http://localhost:8090;
proxy_set_header Host $http_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;
}
}
Guarde y cierre el archivo.
Luego, reinicie el servicio NGINX:
$ sudo systemctl restart nginx
Configuración del cortafuegos
En caso de que haya un firewall en su sistema, configúrelo para habilitar el tráfico HTTP y el tráfico HTTPS a su máquina.
Al usar el firewall UFW, tendrá perfiles preinstalados para NGINX. Así que veamos cómo habilitarlos.
Para verificar los perfiles disponibles instalados en el firewall UFW, ejecute este comando:
$ sudo ufw app list
Se mostrará una lista similar a esta en la pantalla:
Available applications:
Dovecot IMAP
Dovecot POP3
Dovecot Secure IMAP
Dovecot Secure POP3
Nginx Full
Nginx HTTP
Nginx HTTPS
OpenSSH
Postfix
Postfix SMTPS
Postfix Submission
Para permitir el tráfico HTTP (Puerto 80) y HTTPS (Puerto 443), use el perfil "Nginx Full".
Es posible verificar la información de su perfil de esta manera:
$ sudo ufw app info "Nginx Full"
La descripción del perfil aparecerá en pantalla:
Profile: Nginx Full
Title: Web Server (Nginx, HTTP + HTTPS)
Description: Small, but very powerful and efficient web server
Ports:
80,443/tcp
Después de verificar el perfil será posible habilitarlo:
$ sudo ufw allow in "Nginx Full"
Finalmente, proceda a probar los dos servidores web visitando la dirección http://
Si el procedimiento se realizó correctamente, su sitio web se mostrará con la pantalla predeterminada de Apache. Esto significa que el proxy inverso funciona y se ha configurado correctamente.