Host virtual de la pràctica 6.3 i 6.4 (Domini docker6-3.gserrat.cat)
Host virtual
Per la pràctica 6.3 i 6.4 definirem el nom de domini docker6-3.gserrat.cat i l’àlies www.docker6-3.gserrat.cat.
En cas d’accedir al servidor amb algun d’aquests dos noms de domini, redirigirem a l’usuari a “http://127.0.0.1:8090”, és a dir, al localhost al port 8090, on s’està exportant el docker de la pràctica 6.3 i 6.4.
En canvi, si especifiquem la ruta docker6-3.gserrat.cat/connexioBD, redirigirem també al propi docker però directament al fitxer 00_connect.php
Això ho realitzarem especificant la directiva ProxyPass, i mitjançant la directiva ProxyPassReverse reescriu la capçalera de resposta i redireccionament per tal de que mostri el nom de domini
<VirtualHost *: 80>
ServerName docker6-3.gserrat.cat
ServerAlias www.docker6-3.gserrat.cat
ProxyPreserveHost On
ProxyPass /connexioBD http://127.0.0.1:8090/connexioBD
ProxyPassReverse /connexioBD http://127.0.0.1:8090/connexioBD
ProxyPass / http://127.0.0.1:8090/
ProxyPassReverse / http://127.0.0.1:8090/
# Logs
ErrorLog ${APACHE_LOG_DIR}/wiki-error. log
CustomLog ${APACHE_LOG_DIR}/wiki-access.log combined
</VirtualHost>
Certificació SSL del host virtual
La certificació SSL serveix per poder treballar amb HTTPS i poder treballar amb certificats.
Abans de certificat un domini hem de:
- Instal·lar certbot amb l’ordre sudo apt install certbot python3-certbot-apache -y, l’eina que permet emetre certificats gratuits
- Verificar que el domini ja està creat al DNS
- Assegurar que el host virtual està activat (sudo a2ensite <hostVirtual>)
Seguidament certificarem el domini docker6-3.gserrat.cat (i també el seu àlies www.docker6-3.gserrat.cat)
sudo certbot --apache -d docker6-3.gserrat.cat -d www.docker6-3.gserrat.cat
Un cop certificat ens generarà un nou host virtual que escoltarà pel port 443 d’Apache i on tindrà els mòduls de certificació en HTTPS
<IfModule mod_ssl.c>
<VirtualHost *:443>
ServerName docker6-3.gserrat.cat
ServerAlias www.docker6-3.gserrat.cat
ProxyPreserveHost On
ProxyPass /connexioBD http://localhost:8090/00_connect.php
ProxyPassReverse /connexioBD http://localhost:8090/00_connect.php
# Todo lo demás va al contenedor 8090
ProxyPass / http://127.0.0.1:8090/
ProxyPassReverse / http://127.0.0.1:8090/
ErrorLog ${APACHE_LOG_DIR}/docker6-3-error.log
CustomLog ${APACHE_LOG_DIR}/docker6-3-access.log combined
Include /etc/letsencrypt/options-ssl-apache.conf
SSLCertificateFile /etc/letsencrypt/live/docker6-3.gserrat.cat/fullchain.pem
SSLCertificateKeyFile /etc/letsencrypt/live/docker6-3.gserrat.cat/privkey.pem
</VirtualHost>
</IfModule>
Al host virtual sense certificat ens generarà unes directives de redirecció a HTTPS, així si un usuari entra per HTTP, el host virtual redireccionarà a HTTPS
També és possible deshabilitar el lloc virtual per evitar connexions HTTP, però no és recomanable ja que a l’usuari li apareixerà com que el lloc web no és accessible. La millor pràctica és mantenir el lloc web HTTP actiu amb una redirecció a HTTPS
Tot i això, el codi original es mantindrà dins del host virtual. És recomanable retirar tot el codi i deixar únicament la redirecció.
<VirtualHost *:80>
ServerName docker6-3.gserrat.cat
ServerAlias www.docker6-3.gserrat.cat
RewriteEngine on
RewriteCond %{SERVER_NAME} =www.docker6-3.gserrat.cat [OR]
RewriteCond %{SERVER_NAME} =docker6-3.gserrat.cat
RewriteRule ^ https://%{SERVER_NAME}%{REQUEST_URI} [END,NE,R=permanent]
ErrorLog ${APACHE_LOG_DIR}/docker6-3-error.log
CustomLog ${APACHE_LOG_DIR}/docker6-3-access.log combined
</VirtualHost>