Dalla mia esperienza, la configurazione di NGINX diventa rapidamente complessa e può diventare una parte che nessuno vuole toccare per paura di rompere qualcosa. È questo aspetto che mi ha fatto cercare un'alternativa.
Caddy?
Innanzitutto, cos'è Caddy?
È un Server Web multipiattaforma scritto in
GO con una configurazione semplice e un'implementazione automatica del HTTPS (con
Letsencrypt).
Caddy è opensource sotto licenza Apache 2.0. Al momento della scrittura il suo
repository Github si avvicina ai 40k stars.
Comparazione
Compareremo due configurazioni minime per ottenere un reverse proxy di base.
Reverse proxy con NGINX
server {
listen 443 ssl;
server_name example.com;
location / {
proxy_pass http://localhost:3000;
}
ssl_certificate /etc/letsencrypt/live/example.com/fullchain.pem;
ssl_certificate_key /etc/letsencrypt/live/example.com/privkey.pem;
}
server {
listen 80;
server_name example.com;
return 301 https://example.com$request_uri;
}
Con questa configurazione, bisogna anche installare certbot e generare il certificato SSL.
Reverse proxy con Caddy
example.com {
reverse_proxy localhost:3000
}
È tutto! Caddy genererà lui stesso il certificato SSL e si occuperà di reindirizzare le richieste HTTP in HTTPS.
Installazione
Convinto da Caddy?
Per installarlo basta seguire le istruzioni di installazione
qui.
Poi, crea il tuo file di configurazione: /etc/caddy/Caddyfile
Poi, se hai un server NGINX in esecuzione (o un altro server che ascolta sulle porte 80 e 443), dovrai arrestarlo:
sudo systemctl stop nginx.service
sudo systemctl disable nginx.service
Infine, dovrai avviare Caddy e assicurarti che venga lanciato ad ogni riavvio:
sudo systemctl start caddy.service
sudo systemctl enable caddy.service
Ecco!
Naturalmente si può fare molto di più che semplici reverse proxy con Caddy, si possono ad esempio servire file statici, fare load balancing, fare compressione gzip...
Per fare tutto questo dovrai, senza sorpresa, leggere la
documentazione !
Bonus
Caddy può anche essere avviato senza alcun file di configurazione, questo può essere pratico per testare rapidamente qualcosa, ecco alcuni esempi:
Server di file statici dalla cartella corrente
caddy file-server --listen localhost:4444
È l'equivalente di:
npx serve . -p 4444
ma ancora più performante.
Reverse proxy con HTTPS automatico
sudo caddy reverse-proxy --from example.com --to localhost:3000