====== Appunti su Caddy webserver ====== Autore: **//Fabio Di Matteo//** \\ Ultima revisione: **// 30/06/2026 14:10 //** // // Alcuni appunti su Caddy web server. ===== Avviare manualmente Caddy da utente non privilegiato ===== Vogliamo avviare caddy server da utente non privilegiato, ma vogliamo che resti in ascolto su porte privilegiate. setcap 'cap_net_bind_service=+ep' /usr/sbin/caddy su - caddy -s /bin/sh -c "caddy --config /etc/caddy/Caddyfile start" ===== Semplice virtual host con supporto a php ===== Richiede PHP-FPM configurato e avviato con lo stesso utente che usa Caddy. mysite:443 { root * /var/web/ encode file_server php_fastcgi unix//opt/php.sock log { level ERROR output file /var/log/caddy/error.log { roll_size 10mb roll_keep 5 roll_keep_for 336h } } #inserire qui , eventualmente le direttive sottostanti } ===== Url rewrite per un progetto contenuto in una sottocartella ===== ... handle_path /myapp/* { root * /opt/web/myapp try_files {path} {path}/ /index.php?{query} encode gzip php_fastcgi unix//opt/php85.sock file_server } La direttiva try_files fa si che se nn trova file, oppure cartelle con il nome della nostra richiesta allora smista a /myproject/index.php ==== Proibire l'accesso a una sottocartella ==== ... route /phpmyadmin* { respond "Oh no..." } ==== Proibire l'esecuzione di file php in una cartella ==== ... handle /images/*.php { respond "Php Forbidden." } ==== Cambiare globalmente le porte di default per http e https ==== In cima al file di configurazione. Sezione globale. { http_port 880 https_port 84443 } ==== Reverse proxy ==== ... route /apps/* { reverse_proxy localhost:6789 } ... Ricordarsi di abilitare la rotta /apps anche sulla nostra applicazione locale ==== Proteggersi da attacchi ddos ==== ... handle /myapp* { reverse_proxy localhost:3000 { transport http { dial_timeout 2s response_header_timeout 10s } } } ... il server dietro proxy deve rispondere entro 2 secondi a una richiesta e non puo' impiegare piu' di 10 secondi per ritornare una risposta.