Configuración de Nginx como Proxy Inverso con HTTPS y WordPress (Let’s Encrypt y Cloudflare DNS)
Si quieres aprender a configurar un certificado SSL con Let’s Encrypt y Cloudflare en tu servidor local, estás en el lugar correcto. En este tutorial, te guiaré paso a paso para que tu sitio web tenga una conexión segura, utilizando Apache y Nginx como proxy inverso.
Tabla de contenidos
- 1 Requisitos Previos
- 2 Paso 1: Acceder a Cloudflare y Configurar el Dominio
- 3 Paso 2: Conectar al Servidor y Comprobar la Resolución del Dominio
- 4 Paso 3: Instalar y Configurar Apache
- 5 Paso 4: Generar un Certificado SSL con Let’s Encrypt
- 6 Paso 5: Configurar Nginx como Proxy Inverso
- 7 Paso 6: Pruebas Finales y Seguridad
- 8 Conclusión
Requisitos Previos
Antes de comenzar, asegúrate de tener:
- Un dominio configurado en Cloudflare
- Un servidor Debian o similar con acceso SSH
- Apache y Nginx instalados
- Una máquina virtual o servidor con IP accesible
Paso 1: Acceder a Cloudflare y Configurar el Dominio
Lo primero que debes hacer es ingresar a tu cuenta de Cloudflare y asegurarte de que tu dominio esté correctamente configurado. Si no lo has hecho aún, revisa el vídeo anterior donde explico cómo enlazar un dominio a Cloudflare.
Una vez dentro de Cloudflare:
- Accede a la configuración de tu dominio.
- Ve a la sección DNS y añade un nuevo registro A para el subdominio (por ejemplo,
nextcloud.repasomates.com
) apuntando a la IP de tu servidor. - Deshabilita el proxy de Cloudflare temporalmente para evitar problemas con la generación del certificado.
Paso 2: Conectar al Servidor y Comprobar la Resolución del Dominio
Desde tu terminal, conéctate a tu servidor por SSH:
ssh usuario@192.168.1.210
Para verificar que el dominio apunta a la IP correcta, usa el siguiente comando:
nslookup nextcloud.repasomates.com
Si responde correctamente con la IP configurada en Cloudflare, podemos continuar.
Paso 3: Instalar y Configurar Apache
Para servir nuestra aplicación, instalaremos Apache y lo configuraremos en el puerto 8080.
sudo apt update
sudo apt install apache2 -y
Modificamos los puertos de Apache:
sudo nano /etc/apache2/ports.conf
Cambiamos la línea:
Listen 80
Por esta otra:
Listen 8080
Ahora, creamos un VirtualHost en Apache para el subdominio:
sudo nano /etc/apache2/sites-available/nextcloud.repasomates.com.conf
Pegamos la siguiente configuración:
<VirtualHost *:8080>
DocumentRoot /home/guillem/public_html/repasodemates.com/nextcloud
<Directory /home/guillem/public_html/repasodemates.com/nextcloud>
AllowOverride All
Require all granted
</Directory>
</VirtualHost>
Guardamos los cambios y habilitamos el sitio:
sudo a2ensite nextcloud.repasomates.com.conf
sudo systemctl restart apache2
Paso 4: Generar un Certificado SSL con Let’s Encrypt
Para obtener un certificado SSL, instalamos Certbot y el plugin de Cloudflare:
sudo apt install certbot python3-certbot-dns-cloudflare -y
Creamos un archivo de configuración con nuestra API Key de Cloudflare:
sudo nano /etc/letsencrypt/cloudflare.ini
Añadimos el siguiente contenido:
dns_cloudflare_api_token = TU_TOKEN_AQUI
Protegemos el archivo:
sudo chmod 600 /etc/letsencrypt/cloudflare.ini
Ejecutamos el siguiente comando para solicitar el certificado:
sudo certbot certonly --dns-cloudflare --dns-cloudflare-credentials /etc/letsencrypt/cloudflare.ini -d nextcloud.repasomates.com
Si todo va bien, el certificado se generará en la carpeta:
/etc/letsencrypt/live/nextcloud.repasomates.com/
Paso 5: Configurar Nginx como Proxy Inverso
Instalamos Nginx:
sudo apt install nginx -y
Creamos la configuración del subdominio en Nginx:
sudo nano /etc/nginx/sites-available/nextcloud.repasomates.com
Pegamos la siguiente configuración:
server {
listen 443 ssl;
server_name nextcloud.repasomates.com;
ssl_certificate /etc/letsencrypt/live/nextcloud.repasomates.com/fullchain.pem;
ssl_certificate_key /etc/letsencrypt/live/nextcloud.repasomates.com/privkey.pem;
location / {
proxy_pass http://127.0.0.1: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;
}
}
server {
listen 80;
server_name nextcloud.repasomates.com;
return 301 https://$host$request_uri;
}
Guardamos y activamos el sitio:
sudo ln -s /etc/nginx/sites-available/nextcloud.repasomates.com /etc/nginx/sites-enabled/
sudo systemctl restart nginx
Paso 6: Pruebas Finales y Seguridad
Para asegurarnos de que todo funciona correctamente:
- Accede a
https://nextcloud.repasomates.com
y verifica que carga con el certificado SSL. - Si la versión
http://
sigue funcionando, revisa la configuración de redirección en Nginx. - Comprueba que el puerto 8080 no es accesible desde el exterior, asegurándote de que solo Nginx pueda comunicarse con Apache.
Puedes reforzar la seguridad bloqueando accesos directos al puerto 8080 en Apache:
sudo nano /etc/apache2/ports.conf
Y añadiendo:
Listen 127.0.0.1:8080
Reiniciamos Apache:
sudo systemctl restart apache2
Conclusión
Ahora tu servidor tiene un certificado SSL válido con Let’s Encrypt y Cloudflare. Esto asegura que tu sitio web sea accesible de forma segura y sin advertencias del navegador.
Si te ha servido este tutorial, déjame un comentario, dale like y suscríbete para más contenido sobre servidores y configuraciones avanzadas. Nos vemos en el próximo vídeo, donde instalaremos Nextcloud.