Caddy webserver

Har du en guide til en funktion eller et program? Har du tips og trick, som du gerne vil dele med andre? Post dem her.
lath
Indlæg: 5095
Tilmeldt: 27. apr 2008, 02:16
IRC nickname: lars_t_h
Geografisk sted: Fyn

Caddy webserver

Indlæg af lath »

Caddy: https://caddyserver.com/ er en ny webserver med features i stil med Apache og nginx. Den er skrevet i Go programmeringssproget, og kan derfor fuldautomatisk udnytte flere cores/flere CPU kerner - uden nogen som helst ændringer i programmets kode eller i dens konfigurationsfiler.

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.
FAQ: https://caddyserver.com/docs/faq
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: :twisted: )
    Caddy har ingen afhængigheder (ldd /stil/til/caddy giver "ikke et dynamisk kørbart programr").

/Lars
Jeg er Software ingeniør (Diplomingeniør) i Informationsteknologi og indlejede systemer, hvor indlejrede systemer er computer (microcontroller) + elektronik i for eksempel et TV, en router, en vaskemaskine og den slags