F FabGPT-FAQ

Reverse proxy e certificati

Nginx, Caddy, Traefik e i certificati Let's Encrypt: vhost, reload, wildcard e scadenze. Ogni comando è verificato e copiabile; in chat basta descrivere cosa vuoi fare.

13 comandi in questa pagina

# Come configuro un reverse proxy con Nginx?

server {
  listen 443 ssl;
  server_name app.example.com;
  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;
  }
}

Senza gli header X-Forwarded-* l'app dietro vede solo 127.0.0.1: log e rate-limiting diventano ciechi.

Approfondisci: Cos'è un reverse proxy e a cosa serve?Errore 502 Bad Gateway: cause e soluzioni

# Come testo e ricarico la config di Nginx senza downtime?

nginx -t && systemctl reload nginx

Il && è la cintura: se il test fallisce, il reload non parte e il sito resta su con la config vecchia.

Approfondisci: Cos'è un reverse proxy e a cosa serve?

# I WebSocket non funzionano dietro Nginx: come sistemo?

location /ws/ {
  proxy_pass http://127.0.0.1:8080;
  proxy_http_version 1.1;
  proxy_set_header Upgrade $http_upgrade;
  proxy_set_header Connection "upgrade";
  proxy_read_timeout 3600s;
}

Senza Upgrade/Connection il handshake WebSocket muore in silenzio; il timeout lungo evita i drop dopo 60s.

Approfondisci: Cos'è un reverse proxy e a cosa serve?Errore 502 Bad Gateway: cause e soluzioni

# Errore 413 in upload dietro Nginx: come alzo il limite?

# nel server o location block:
client_max_body_size 512m;

Il default è 1 MB: ogni Nextcloud dietro Nginx inciampa qui al primo upload serio. Anche l'app dietro ha il SUO limite.

Approfondisci: Cos'è un reverse proxy e a cosa serve?

# Come scrivo un Caddyfile per un reverse proxy?

app.example.com {
  reverse_proxy 127.0.0.1:8080
}

Tutto qui: HTTPS con certificato automatico incluso. È il motivo per cui Caddy è il default sensato del self-hosting.

Approfondisci: Cos'è un reverse proxy e a cosa serve?Come funziona Let's Encrypt e il protocollo ACME?

# Come ricarico Caddy dopo una modifica?

caddy validate --config /etc/caddy/Caddyfile
systemctl reload caddy

validate prima del reload: stesso principio di nginx -t.

Approfondisci: Cos'è un reverse proxy e a cosa serve?

# Come espongo un container con le label di Traefik?

services:
  app:
    image: miaapp:1.0
    labels:
      - traefik.enable=true
      - traefik.http.routers.app.rule=Host(`app.example.com`)
      - traefik.http.routers.app.tls.certresolver=le
      - traefik.http.services.app.loadbalancer.server.port=8080

La label della porta serve quando l'immagine non la dichiara (EXPOSE): è l'errore Traefik più comune.

Approfondisci: Cos'è un reverse proxy e a cosa serve?Cos'è Docker Compose?

# Come chiedo un certificato con certbot in standalone?

certbot certonly --standalone -d app.example.com

--standalone apre lui la porta 80: il web server va fermato per la sfida, o usa il webroot (scheda dopo).

Approfondisci: Come funziona Let's Encrypt e il protocollo ACME?Cos'è CertMate e come gestisce i certificati TLS/SSL?

# Come chiedo un certificato senza fermare il web server (webroot)?

certbot certonly --webroot -w /var/www/html -d app.example.com

La sfida passa dal sito già in piedi: zero downtime. Il path -w deve essere servito su http://dominio/.well-known/.

Approfondisci: Come funziona Let's Encrypt e il protocollo ACME?

# Come ottengo un certificato wildcard (challenge DNS)?

certbot certonly --dns-cloudflare --dns-cloudflare-credentials ~/.secrets/cf.ini -d '*.example.com' -d example.com

Il wildcard esige la challenge DNS-01: serve il plugin del tuo provider e un token API custodito bene.

Approfondisci: Cos'è un certificato wildcard (e i SAN)?Come funziona Let's Encrypt e il protocollo ACME?

# Come testo (e forzo) il rinnovo dei certificati?

certbot renew --dry-run
certbot renew --force-renewal   # solo se serve davvero

Il --dry-run usa l'ambiente staging: prova il rinnovo senza bruciare i rate limit di Let's Encrypt.

Approfondisci: Come funziona Let's Encrypt e il protocollo ACME?Certificato TLS scaduto: perché succede e come evitarlo?

# Come genero un certificato self-signed per test?

openssl req -x509 -newkey rsa:4096 -keyout key.pem -out cert.pem -days 365 -nodes -subj '/CN=test.local'

Per lab e reti interne; il browser protesterà per design. In produzione: Let's Encrypt, che ormai è gratis e automatico.

Approfondisci: Come funziona Let's Encrypt e il protocollo ACME?Errore SSL handshake failure: cosa significa?

# Come controllo la scadenza (e la catena) di un certificato?

echo | openssl s_client -connect example.com:443 -servername example.com 2>/dev/null | openssl x509 -noout -dates -issuer

-servername è obbligatorio con la SNI (host multipli sullo stesso IP), o ispezioni il certificato sbagliato.

Approfondisci: Certificato TLS scaduto: perché succede e come evitarlo?Come si monitorano scadenza dominio, SSL, DNS e reputazione IP?

Chiedi in chat