Reverse proxy HTTPS
Esempi pronti da adattare per Caddy, Nginx e Traefik, sia all'interno che all'esterno di Docker.
Scegli l'esempio che corrisponde alla posizione del proxy. Il nome nasdash funziona solo se entrambi i container condividono la stessa rete Docker. Un proxy installato sull'host utilizza in genere 127.0.0.1:2504.
Caddy installato sull'host
Pubblica NasDash solo sull'interfaccia di loopback:
services:
nasdash:
ports:
- "127.0.0.1:2504:2504"Quindi in Caddyfile:
nasdash.example.com {
encode zstd gzip
reverse_proxy 127.0.0.1:2504
}Caddy ottiene il certificato se il DNS pubblico punta al server e le porte richieste per la challenge sono accessibili.
Nginx installato sull'host
server {
listen 443 ssl http2;
server_name nasdash.example.com;
ssl_certificate /etc/letsencrypt/live/nasdash.example.com/fullchain.pem;
ssl_certificate_key /etc/letsencrypt/live/nasdash.example.com/privkey.pem;
location / {
proxy_pass http://127.0.0.1:2504;
proxy_http_version 1.1;
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;
proxy_set_header Upgrade $http_upgrade;
proxy_set_header Connection "upgrade";
}
}La gestione dei certificati non è gestita da NasDash. Testa la configurazione di Nginx prima di ricaricare.
Caddy nello stesso Compose
services:
nasdash:
image: ghcr.io/lucas-lepajollec/nasdash:latest
expose:
- "2504"
networks: [web]
caddy:
image: caddy:2-alpine
ports:
- "80:80"
- "443:443"
- "443:443/udp"
volumes:
- ./Caddyfile:/etc/caddy/Caddyfile:ro
- caddy-data:/data
- caddy-config:/config
networks: [web]
networks:
web:
volumes:
caddy-data:
caddy-config:nasdash.example.com {
reverse_proxy nasdash:2504
}Traefik nello stesso Compose
L'esempio presuppone una rete esterna proxy già utilizzata da Traefik e un resolver denominato letsencrypt:
services:
nasdash:
image: ghcr.io/lucas-lepajollec/nasdash:latest
networks: [proxy]
labels:
- "traefik.enable=true"
- "traefik.http.routers.nasdash.rule=Host(`nasdash.example.com`)"
- "traefik.http.routers.nasdash.entrypoints=websecure"
- "traefik.http.routers.nasdash.tls=true"
- "traefik.http.routers.nasdash.tls.certresolver=letsencrypt"
- "traefik.http.services.nasdash.loadbalancer.server.port=2504"
networks:
proxy:
external: trueControlli dopo la pubblicazione
curl -I https://nasdash.example.com/api/healthVerifica inoltre l'accesso, la disconnessione, i link ai servizi, il caricamento dei widget e l'assenza di contenuti misti. Non aggiungere mai i segreti di NasDash alle label del proxy se la sua ispezione è accessibile ad altri utenti.