Caddyserver

May 31, 2017

Har tidigare kört Apache httpd som webfront men på senare år gått över till nginx som idag sannolikt är förstavalet för produktionssystem pga prestanda, robusthet och egen erfarenhet.

Sista tiden har jag dock börjat använda en ny webserver som heter Caddyserver. Den är skriven i go och består i sin kompilerade form av en binär enbart. Caddy finns givetvis som docker images där man enkelt kan injecta sin egna config för reverse proxys m.m.

Caddy coolness

  • Tokenkelt att konfa https mha integrerad letsencrypt-koppling. Har du bara ett korrekt domän-namn satt kan du enkelt tuta och köra. Finns även en one-liner för self-signed om man vill det…
  • http2 support utan stök
  • websockets support i proxy-pryttlarna
  • Serva markdown content
  • Bra reverse-proxy support för att koppla mot ett gäng backend services. ip_hash sticky om man vill.
  • Smidiga plugins för koppling mot git - Låt Caddyservern plocka content från github/bitbucket
  • Smarta config-keywords som t.ex. transparent som gör att du slipper copy-paste’a långa headers block för klassiska Forwarded headers man behöver sätta.

Hur funkar den?

En Caddyserver behöver en config-fil som heter Caddyfile. Dessa filer tenderar att bli mycket kortare och mer läsbara än motsvarande nginx eller apache conf-filer. Här ett exempel

mydomain.com {
                        proxy / 10.12.1.44:8080 {
                            transparent
                        }
                        tls my.email@address.com
                        gzip
                        log stdout
}

Förutsatt att ovan startas på en host med domain-name mydomain.com så kommer den lyssna på https+http, hämta cert från letsencrypt (email-adressen hjälper till). Anrop på http redirectas till motsvarande på https, default-beteende. Exemplet ovan proxar anrop mot / vidare till en specific IP-adress inkl. alla headers som en app-server behöver. Svar zip’as mha gzip och loggning styrs mot stdout, passar för en docker container som kanske routar det vidare mot någon uppsamlare.

comments powered by Disqus