En aquest xicotet article t'explique un truquet que he aplicat al meu hosting FTM (Fes-ho Tu Mateix) amb FreeBSD i diverses Raspberry Pi.
Resulta que en la Raspberry Pi del terrat, on tinc la càmera AllSky, quan escrivia el domini sense https, el Nginx de la Raspberry Pi que em fa de proxy invers redirigia el tràfic, tal qual, i em fallava perquè al ser http i no respondre el port 443 em donava error:

En el proxy invers, jo tenia la redirecció feta així:
server {
server_name allsky.joancatala.net;
listen 443 ssl;
location / {
proxy_pass http://192.168.1.10/;
proxy_set_header Host $host;
}
ssl_certificate /usr/local/etc/letsencrypt/live/allsky.joancatala.net/fullchain.pem; # managed by Certbot
ssl_certificate_key /usr/local/etc/letsencrypt/live/allsky.joancatala.net/privkey.pem; # managed by Certbot
include /usr/local/etc/letsencrypt/options-ssl-nginx.conf;
ssl_dhparam /usr/local/etc/letsencrypt/ssl-dhparams.pem;
}
I la solució ha segut modificant el fitxer, en Nginx, i afegint una configuració per a que si un usuari fa una petició al port 80 des del navegador, escrivint http, se li redireccione automàticament al port 443 de l'https, i així evitem l'error 404 Not Found.
La configuració definitiva és:
server {
listen 80;
server_name allsky.joancatala.net;
# Redirige todo el tráfico HTTP a HTTPS
return 301 https://$host$request_uri;
}
server {
server_name allsky.joancatala.net;
listen 443 ssl;
location / {
proxy_pass http://192.168.1.10/;
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;
}
ssl_certificate /usr/local/etc/letsencrypt/live/allsky.joancatala.net/fullchain.pem; # managed by Certbot
ssl_certificate_key /usr/local/etc/letsencrypt/live/allsky.joancatala.net/privkey.pem; # managed by Certbot
include /usr/local/etc/letsencrypt/options-ssl-nginx.conf;
ssl_dhparam /usr/local/etc/letsencrypt/ssl-dhparams.pem;
}
És tan senzill com això.
Ara comprovem el funcionament d'Nginx amb:
$ doas nginx -t
I si no dona errors, el reiniciem amb:
$ doas service nginx restart
I ja ho tenim, ara dona igual escriure http://url, que Nginx ens redirecciona a https://url, i tot bé:






