Cómo instalar Apache con Nginx como proxy inverso en Ubuntu 22.04

Apache y Nginx son gratuitos, de código abierto y se encuentran entre los servidores web más populares del mundo. A menudo se utilizan para alojar aplicaciones basadas en PHP. Nginx es conocido por su estructura ligera y su velocidad, mientras que Apache lo es por su rendimiento. Ambos están diseñados para manejar diferentes cargas de trabajo. Nginx está bien equipado para manejar contenido estático, mientras que Apache puede manejar contenido dinámico. Podemos utilizar ambos servidores web en un mismo sistema para beneficiarnos de las ventajas de ambos.

Este artículo te mostrará cómo instalar Nginx como proxy inverso de Apache en Ubuntu 22.04.

Requisitos previos

  • Un servidor que ejecute Ubuntu 22.04.
  • Un nombre de dominio válido apuntado con la IP de tu servidor.
  • Una contraseña de root configurada en el servidor.

Instalar el servidor web Apache

El paquete del servidor web Apache está incluido por defecto en el repositorio de Ubuntu 22.04. Puedes instalarlo ejecutando el siguiente comando:

apt-get install apache2 -y

Una vez instalado el paquete Apache, inicia el servicio Apache y habilítalo para que se inicie al reiniciar el sistema:

systemctl start apache2
systemctl enable apache2

Cambiar el puerto por defecto de Apache

Por defecto, el servidor web Apache escucha en el puerto 80. En este post, utilizaremos Nginx como proxy inverso para Apache. Así que tendrás que cambiar el puerto por defecto de Apache a 8080. Puedes cambiarlo editando el siguiente archivo:

nano /etc/apache2/ports.conf

Busca la siguiente línea:

Listen 80

Y, sustitúyela por la siguiente línea:

Listen 127.0.0.1:8080

Guarda y cierra el archivo cuando hayas terminado. A continuación, también tendrás que editar el archivo de configuración del host virtual por defecto de Apache y cambiar el puerto por defecto.

Puedes editarlo con el siguiente comando:

nano /etc/apache2/sites-available/000-default.conf

Busca la siguiente línea:

<VirtualHost *:80>

Y, sustitúyela por la siguiente línea:

<VirtualHost 127.0.0.1:8080>

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

systemctl restart apache2

Ahora puedes comprobar el estado del Apache utilizando el siguiente comando:

systemctl status apache2

Obtendrás la siguiente salida:

? apache2.service - The Apache HTTP Server
     Loaded: loaded (/lib/systemd/system/apache2.service; enabled; vendor preset: enabled)
     Active: active (running) since Thu 2022-05-05 12:02:11 UTC; 7s ago
       Docs: https://httpd.apache.org/docs/2.4/
    Process: 25295 ExecStart=/usr/sbin/apachectl start (code=exited, status=0/SUCCESS)
   Main PID: 25299 (apache2)
      Tasks: 6 (limit: 4630)
     Memory: 20.5M
        CPU: 126ms
     CGroup: /system.slice/apache2.service
             ??25299 /usr/sbin/apache2 -k start
             ??25300 /usr/sbin/apache2 -k start
             ??25301 /usr/sbin/apache2 -k start
             ??25302 /usr/sbin/apache2 -k start
             ??25303 /usr/sbin/apache2 -k start
             ??25304 /usr/sbin/apache2 -k start

May 05 12:02:11 ubuntu2204 systemd[1]: Starting The Apache HTTP Server...

En este momento, Apache está iniciado y escucha en el puerto 8080. Puedes comprobarlo con el siguiente comando:

ss -antpl | grep apache2

Obtendrás la siguiente salida:

LISTEN 0      511        127.0.0.1:8080      0.0.0.0:*    users:(("apache2",pid=25304,fd=3),("apache2",pid=25303,fd=3),("apache2",pid=25302,fd=3),("apache2",pid=25301,fd=3),("apache2",pid=25300,fd=3),("apache2",pid=25299,fd=3))

Instalar el servidor web Nginx

Puedes instalar el paquete Nginx ejecutando el siguiente comando:

apt-get install nginx -y

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

systemctl start nginx
systemctl enable nginx

Configurar Nginx como proxy inverso para Apache

Ahora, tendrás que configurar Nginx como proxy inverso para reenviar todas las peticiones que lleguen por el puerto 80 al puerto 8080 del servidor web Apache.

Para ello, crea un archivo de configuración de host virtual Nginx:

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

Añade las siguientes líneas:

server {
   listen 80;

   root /var/www/html/;
   index index.html index.htm;

   server_name proxy.example.com;

   location \ {

   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;
}

}

Guarda y cierra el archivo cuando hayas terminado. A continuación, comprueba si Nginx tiene algún error de sintaxis con el siguiente comando:

nginx -t

Obtendrás la siguiente salida:

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

A continuación, reinicia el servicio Nginx para aplicar los cambios:

systemctl restart nginx

También puedes comprobar el estado de Nginx con el siguiente comando:

systemctl status nginx

Obtendrás la siguiente salida:

? nginx.service - A high performance web server and a reverse proxy server
     Loaded: loaded (/lib/systemd/system/nginx.service; enabled; vendor preset: enabled)
     Active: active (running) since Thu 2022-05-05 12:03:09 UTC; 5s ago
       Docs: man:nginx(8)
    Process: 25313 ExecStartPre=/usr/sbin/nginx -t -q -g daemon on; master_process on; (code=exited, status=0/SUCCESS)
    Process: 25314 ExecStart=/usr/sbin/nginx -g daemon on; master_process on; (code=exited, status=0/SUCCESS)
   Main PID: 25315 (nginx)
      Tasks: 3 (limit: 4630)
     Memory: 3.3M
        CPU: 49ms
     CGroup: /system.slice/nginx.service
             ??25315 "nginx: master process /usr/sbin/nginx -g daemon on; master_process on;"
             ??25316 "nginx: worker process" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" ""
             ??25317 "nginx: worker process" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" ""

May 05 12:03:09 ubuntu2204 systemd[1]: Starting A high performance web server and a reverse proxy server...
May 05 12:03:09 ubuntu2204 systemd[1]: Started A high performance web server and a reverse proxy server.

Verificar Proxy Inverso

Llegados a este punto, Nginx está instalado y configurado como proxy inverso para el servidor web Apache. Ahora puedes probarlo utilizando la URL http://proxy.example.com. Si todo va bien, obtendrás la página de prueba de Apache en la siguiente pantalla:

Conclusión

Esta guía ha explicado cómo instalar y configurar Nginx como proxy inverso para el servidor web Apache. Ahora puedes utilizar esta configuración para alojar cualquier aplicación en Internet. No dudes en preguntarme si tienes alguna duda.

Scroll al inicio