Mere i den tekniske afdeling om Caddy: http://blog.gopheracademy.com/caddy-a-look-inside/
Features:
- HTTP/2 - It's time for a faster web. Caddy supports HTTP/2 right out of the box. No thought required.
- WebSockets - Caddy can pipe stdin and stdout from any program to WebSocket clients.
- FastCGI - Serve PHP by proxying requests to FastCGI servers like php-fpm.
- Clean URLs - Elegantly serve files without needing the extension in the URL. (man kan undgå at en URL ender på f.eks. index.html)
- TLS 1.2 - Direct integration with Let's Encrypt: https://letsencrypt.org/ is on its way, or use your own certs and keys. Supports SNI: http://en.wikipedia.org/wiki/Server_Name_Indication. SNI bruges til at have flere websites på samme IP adresse, som bruger SSL kryptering, dvs at en URL for hvert website kan(ikke skal) starte med https://
- Markdown - Serve Markdown documents rendered on-the-fly as HTML.
- Headers - Send custom response headers just by adding a line to your Caddyfile.: https://caddyserver.com/docs/caddyfile
- Gzip - Compress responses to save bandwidth.
- Easy Deployment - Caddy is a single executable with no dependencies. Any platform.
- IPv6 - Runs full well in an IPv6 environment.
- Reverse Proxy - Forward requests to other endpoints with reverse proxy and load balancing.
- Directory Browsing - List the contents of folders according to your own template.
- Multi-core - When the going gets tough, Caddy gets going on more CPUs.
- Logging - Caddy takes copious notes according to your favorite log format.
- Rewrites & Redirects - Rewrite requests internally or configure HTTP redirects.
- Virtual Hosts - Serve multiple sites from the same address with a single Caddyfile.
User Guide: https://caddyserver.com/docs
Nede i bunden af https://caddyserver.com/ er der et eksempel på en Caddy fil (konfigurationsfil for Caddy):
Jeg har modificeret den så man kan se hvordan den kunne se ud, hvis der blev defineret en for ubuntudanmark.dk:
Kode: Vælg alt
http://ubuntudanmark.dk # Ubuntu Danmarks web site
ext .html # Clean URLs
errors {
log ../errors.log # Error log
404 error-404.html # Custom error page
}
fastcgi /forum localhost:9000 php # PHP backend for PHPBB3 forum
fastcgi / localhost:9001 #PHP backend for WordPress CMS
Support for kryptering med SSL (URLs der begynder med https://) er basalt set 1 linie i caddy konfigurationsfilen:
F.eks.
Kode: Vælg alt
tls ../cert.pem ../key.pem
Flere detaljer på: https://caddyserver.com/docs/tls
Som du kan se er det nemt at få fyret op under - for eksempel - et WordPress baseret website.
Udviklerne af Caddy skriver at de også har i støbeskeen at lave en grafisk frontend/brugergrænseflade, så den bliver nemmere at gå til for ikke så teknisk mindede folk.
Installation af Caddy
- Download programmet fra https://caddyserver.com/download
- Åbn zip arkivet, og pak caddy (web serveren) ud i en mappe, der er nævnt i PATH miljøvariablen.
F.eks. i ~/bin, som kan oprettes med:Kode: Vælg alt
mkdir -p ~/bin
- Skriv din Caddy fil
- Lav programmet kørbart kun for brugeren der ejer filen - dette er nødvendigt på grund af den efterfølgende kommando (jeg forventer at caddy nu er i ~/bin/ mappen):
Kode: Vælg alt
chmod 700 ~/bin/caddy
- Tillad at programmet bruger porte under port 1024, feks. port 80 til (http://), og port 443 til SSL (https://)
Kode: Vælg alt
sudo setcap cap_net_bind_service=+ep ~/bin/caddy
Her bruges en nyere feature i Linux kernen. den feature hedder capabilities.
Bemærk: hvis du overskriver caddy med en nyere version af programmet, så mister det sine tildelte capabilities! - Start webserveren - uden at bruge sudo, altså som en alm. bruger.
Bemærk a den tidligere udstedte chmod 700 /sti/til/caddy gør at det kun er brugeren der ejer caddy filen (og selvfølgelig også superbrugeren, root) der kan starte lige netop det program.
Du kan sikre webserveren yderlige ved at bruge en ny bruger der ikke har nogen specielle retigheder, f.eks. at den bruger har en shell som hedder /usr/sbin/nologin (prøv at gætte hvad det program gør: )
Caddy har ingen afhængigheder (ldd /stil/til/caddy giver "ikke et dynamisk kørbart programr").
/Lars