| 5 settembre 2022
Caddy è un ottimo server web. È più facile da configurare rispetto a nginx e gestisce autonomamente e automaticamente le richieste/rinnovi dei certificati ssl, quindi non è necessario utilizzare certbot/cron. A volte si potrebbe preferire usare Caddy invece di Nginx/Apache/Lighttpd/etc. FreeBSD e Caddy funzionano molto bene insieme per siti web statici/reverse proxy, ma spesso abbiamo a che fare con siti web dinamici. Aggiungere PHP alla “ricetta” è abbastanza facile.
Iniziamo con l’installare e abilitare Caddy:
pkg install caddy
service caddy enable
Ora installiamo PHP - per esempio, PHP 8.1 - e abilitiamo php-fpm:
pkg install php81
service php-fpm enable
Quando possibile preferisco utilizzare php-fpm tramite socket locali, se il server web e php-fpm sono in esecuzione sullo stesso host. Modifichiamo quindi alcune configurazioni editando il file /usr/local/etc/php-fpm.d/www.conf:
Sostituiamo
listen = 127.0.0.1:9000
in
listen = /var/run/php81.sock
Quindi, modifichiamo il proprietario del socket. Basta decommentare le righe seguenti:
listen.owner = www
listen.group = www
listen.mode = 0660
Avviamo ora php-fpm:
service php-fpm start
Modifichiamo ora /usr/local/etc/caddy/Caddyfile. Aggiungiamo qualcosa del genere:
my.website.com {
root * /usr/local/www/website
php_fastcgi unix//var/run/php81.sock
file_server
}
Questo configurerà un virtualhost chiamato my.website.com (e Caddy cercherà di ottenere un certificato), con la sua radice su /usr/local/www/website e processerà qualsiasi richiesta di file .php tramite il socketphp. La direttiva file_server assicura che i file statici possano essere serviti dal percorso root. Avviamo ora Caddy:
service caddy start
Questo è tutto. Naturalmente si tratta di una configurazione molto elementare, ma può essere usata come bozza per setup più avanzati. Per esempio, si può aggiungere qualcosa del tipo:
@disallowed {
path /xmlrpc.php
path *.sql
path /wp-content/uploads/*.php
}
rewrite @disallowed '/index.php'
Tradotto dall’originale in inglese sul blog https://it-notes.dragas.net