domingo, 16 de marzo de 2025

Migración de Apache2 a Nginx con Proxy Inverso

El objetivo de este artículo es configurar mi servidor web en casa, migrando de http a https y reemplazando Apache2 por Nginx para mejorar el rendimiento y la facilidad de configuración.

Migrando de apache a Nginx

¿Por qué usar Nginx?

Nginx es un servidor web y proxy inverso ligero y rápido que ofrece múltiples ventajas:

  • Manejo eficiente de tráfico HTTP, HTTPS, TCP y UDP.
  • Optimización para servir contenido estático.
  • Funcionalidad de balanceo de carga y proxy inverso.
  • Mayor rendimiento y menor consumo de recursos en comparación con Apache.

En este caso, lo usaremos como proxy inverso.

Instalación de Nginx en Raspberry Pi (Linux)

Ejecuta los siguientes comandos para instalar y verificar Nginx:

sudo apt update && sudo apt install nginx -y
nginx -v  # Verificar versión instalada
systemctl status nginx  # Comprobar estado del servicio

Para asegurarte de que Nginx se inicie automáticamente tras un reinicio:

sudo systemctl enable nginx

Para probar la configuración de Nginx:

sudo nginx -t

Configuración de Nginx

El archivo principal de configuración en Debian/Ubuntu se encuentra en:

/etc/nginx/nginx.conf

Migración de Apache a Nginx

Configuración para localhost en el puerto 80

Si tienes un servicio web en Apache que usa PHP/JavaScript, configura Nginx en /etc/nginx/sites-available/default con la siguiente configuración:

server {
    listen 80;
    server_name localhost;
    root /var/www/html/apache2;
    index index.php index.html index.htm;

    location / {
        autoindex on;  # Habilita listado de directorios si no hay index.html
        try_files $uri $uri/ /index.php?$args;
    }

    location ~ \.php$ {
        include snippets/fastcgi-php.conf;
        fastcgi_pass unix:/run/php/php-fpm.sock;
        fastcgi_param SCRIPT_FILENAME $document_root$fastcgi_script_name;
        include fastcgi_params;
    }
}

Configuración de Proxy Inverso con HTTPS

Para acceder de forma segura mediante https, crea o edita el archivo de configuración /etc/nginx/sites-available/local.anibalcopitan.com:

server {
    listen 443 ssl;
    server_name local.anibalcopitan.com;

    ssl_certificate /etc/letsencrypt/live/local.anibalcopitan.com/fullchain.pem;
    ssl_certificate_key /etc/letsencrypt/live/local.anibalcopitan.com/privkey.pem;

    location / {
        proxy_pass http://127.0.0.1:80;
        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 https;
    }
}

Resultado Final

Aquí está el resultado final después de migrar a Nginx:

Migración Apache2 a Nginx
Ver en YouTube

Conclusión

Con esta configuración, Nginx actuará como un proxy inverso para redirigir las solicitudes a un servidor local, garantizando un acceso seguro mediante https. Esta migración optimiza el rendimiento y la administración de tu servidor web en casa.

No hay comentarios:

Publicar un comentario

Soy Aníbal 🐧💻. ¿Tienes una gran Idea/Proyecto?

¿Tienes un proyecto en mente o necesitas resolver un desafío técnico? Estoy aquí para ayudarte a encontrar la mejor solución. 🚀

Hablemos sobre tu proyecto