CodeGym /Cursos /Docker SELF /Despliegue de un servidor web con hosts virtuales y SSL

Despliegue de un servidor web con hosts virtuales y SSL

Docker SELF
Nivel 7 , Lección 5
Disponible

1. Preparación del entorno

Ahora es el momento de unir todo. Hoy desplegaremos un servidor con varios hosts virtuales y les conectaremos HTTPS. Vamos a probar, depurar y configurar todo hasta el final.

Nuestra tarea

En este proyecto desplegaremos dos sitios en un único servidor web:

  • example.com
  • test.com

Para cada sitio configuraremos un host virtual, conectaremos HTTPS y además mostraremos los pasos de depuración y verificación del funcionamiento. ¿Listo? ¡Vamos allá!

Preparación

Antes de empezar, asegurémonos de que todo está configurado correctamente:

  1. Ya tienes instalado un servidor web (Nginx o Apache).

    • Si usas Nginx:

      sudo apt-get update
      sudo apt-get install nginx
      
    • O Apache:

      sudo apt-get update
      sudo apt-get install apache2
      
  2. El paquete Certbot para trabajar con SSL está instalado.

    • Para Nginx:

      sudo apt-get install certbot python3-certbot-nginx
      
    • Para Apache:

      sudo apt-get install certbot python3-certbot-apache
      
  3. Tienes acceso al servidor donde están configurados los DNS para los dominios example.com y test.com, o puedes usar /etc/hosts para pruebas.


2. Configuración del directorio para cada sitio

Comencemos creando los directorios y archivos para nuestros sitios.

Paso 1: Crear carpetas para los sitios

sudo mkdir -p /var/www/example.com
sudo mkdir -p /var/www/test.com

Paso 2: Crear archivos HTML de prueba

Vamos a crear un archivo HTML simple para cada sitio:

example.com

sudo nano /var/www/example.com/index.html

Contenido:

<!DOCTYPE html>
<html>
<head>
    <title>¡Bienvenido a example.com!</title>
</head>
<body>
    <h1>Este es example.com</h1>
    <p>¡Bienvenido a example.com! ¡El sitio está activo y seguro con SSL!</p>
</body>
</html>

test.com

sudo nano /var/www/test.com/index.html

Contenido:

<!DOCTYPE html>
<html>
<head>
    <title>¡Bienvenido a test.com!</title>
</head>
<body>
    <h1>Este es test.com</h1>
    <p>¡Bienvenido a test.com! ¡El sitio está funcionando y seguro con SSL!</p>
</body>
</html>

3. Configuración de hosts virtuales

Vamos a crear un archivo de configuración separado para cada sitio.

Paso 1: Configuración para Nginx

example.com

sudo nano /etc/nginx/sites-available/example.com

Contenido:

server {
    listen 80;
    server_name example.com www.example.com;

    root /var/www/example.com;
    index index.html;

    location / {
        try_files $uri $uri/ =404;
    }
}

test.com

sudo nano /etc/nginx/sites-available/test.com

Contenido:

server {
    listen 80;
    server_name test.com www.test.com;

    root /var/www/test.com;
    index index.html;

    location / {
        try_files $uri $uri/ =404;
    }
}

Activamos la configuración:

sudo ln -s /etc/nginx/sites-available/example.com /etc/nginx/sites-enabled/
sudo ln -s /etc/nginx/sites-available/test.com /etc/nginx/sites-enabled/

Reiniciamos el servidor:

sudo nginx -t
sudo systemctl reload nginx

Paso 2: Configuración para Apache

example.com

sudo nano /etc/apache2/sites-available/example.com.conf

Contenido:

<VirtualHost *:80>
    ServerName example.com
    ServerAlias www.example.com

    DocumentRoot /var/www/example.com
    <Directory /var/www/example.com>
        Options Indexes FollowSymLinks
        AllowOverride All
        Require all granted
    </Directory>
</VirtualHost>

test.com

sudo nano /etc/apache2/sites-available/test.com.conf

Contenido:

<VirtualHost *:80>
    ServerName test.com
    ServerAlias www.test.com

    DocumentRoot /var/www/test.com
    <Directory /var/www/test.com>
        Options Indexes FollowSymLinks
        AllowOverride All
        Require all granted
    </Directory>
</VirtualHost>

Activamos las configuraciones:

sudo a2ensite example.com.conf
sudo a2ensite test.com.conf
sudo systemctl reload apache2

4. Configuración de HTTPS para sitios web

Ahora conectaremos SSL para ambos sitios utilizando Let’s Encrypt.

sudo certbot --nginx
# o para Apache:
sudo certbot --apache

El proceso te pedirá elegir para qué sitios emitir certificados. Escoge example.com y test.com. Certbot actualizará automáticamente la configuración de los servidores.


5. Comprobación del funcionamiento de los sitios

Después de completar la configuración, visita tus sitios:

Deberías ver las páginas HTML creadas. Asegúrate de que el navegador muestre "Seguro" (Secure) en la barra de direcciones.


6. Depuración y comprobación

Si algo salió mal, revisa los logs:

  • Para Nginx:

    sudo tail -f /var/log/nginx/error.log
    
  • Para Apache:

    sudo tail -f /var/log/apache2/error.log
    

O verifica la disponibilidad usando curl:

curl -I http://example.com
curl -I https://example.com

7. Renovación de certificados

Certbot actualiza automáticamente los certificados usando cron del sistema. Para comprobarlo, puedes ejecutarlo manualmente:

sudo certbot renew --dry-run

Así, paso a paso, hemos configurado un servidor web con soporte para múltiples sitios y HTTPS. Acabas de recorrer todo el camino desde un servidor vacío hasta uno funcionando con hosts virtuales y SSL. Ahora tu servidor está listo para mostrarle al mundo sus sitios. ¿A poco no está genial?

1
Cuestionario/control
Trabajo con servidores web en Linux, nivel 7, lección 5
No disponible
Trabajo con servidores web en Linux
Trabajo con servidores web en Linux
Comentarios
TO VIEW ALL COMMENTS OR TO MAKE A COMMENT,
GO TO FULL VERSION