Caddy snippet လေးတွေ ဖန်တီးထားပြီး သုံးရတာ တော်တော်အဆင်ပြေတယ်။ ရေးရတာလည်းလွယ်တယ်။ အခုလက်ရှိ လုပ်ထားသည့် snippet တွေကို ဒီမှာ လာမှတ်ထားတာပါ။

Laravel-App

(laravel-app) {
        {args.0} {
                # Resolve the root directory for the app
                root * {args.1}/public

        log {
                output file /var/log/caddy/{args.0}.access.log {
                        roll_size 100mb
                        roll_keep 30
                        roll_keep_for 720h
                }
                format console
                level DEBUG
        }
        # Provide Zstd and Gzip compression
        encode zstd gzip

        # Enable PHP-FPM
        php_fastcgi unix//run/php/php{args.2}-fpm.sock

        # Allow caddy to serve static files
        file_server
    }
}

ပြန်သုံးမယ်ဆိုရင်

import  snippets/*
import laravel-app example.domain.com /var/www/example.domain.com "8.1"

args ဆိုတာက argument တွေ pass လုပ်ပေးဖို့ပါပဲ။ domain , direcotry နဲ့ PHP FPM အတွက် version တွေကို pass လုပ်ထားပေးဖို့ပဲ လိုတယ်။

PHP

(normal-php) {
        {args.0} {
                # Resolve the root directory for the app
                root * {args.1}

        log {
                output file /var/log/caddy/{args.0}.access.log {
                        roll_size 100mb
                        roll_keep 30
                        roll_keep_for 720h
                }
                format console
                level DEBUG
        }
        # Provide Zstd and Gzip compression
        encode zstd gzip

        # Enable PHP-FPM
        php_fastcgi unix//run/php/php{args.2}-fpm.sock

        # Allow caddy to serve static files
        file_server
    }
}

ပုံမှန် PHP ဆိုရင် public folder အောက်က မဟုတ်တော့ပဲ တိုက်ရိုက် ခေါ်ထားပါတယ်။

NodeJS

(nodejs-app) {
        {args.0} {
                # Resolve the root directory for the app
                reverse_proxy localhost:{args.1}
                log {
                output file /var/log/caddy/{args.0}.access.log {
                        roll_size 100mb
                        roll_keep 30
                        roll_keep_for 720h
                }
                format console
                level DEBUG
        }
        # Provide Zstd and Gzip compression
        encode zstd gzip

        file_server
    }
}

localhost ကို port နဲ့ ပြန်ခေါ်ထားတာ ဖြစ်လို့ domain နဲ့ port ပဲ pass လုပ်ပေးဖို့လိုပါတယ်။

import nodejs-app sub.domain.com 3001

အခုတလော Caddy ကို တော်တော်သဘောကျတယ်။ configuration လွယ်သလို https လည်းပါတယ်။ performance လည်း ကောင်းသည့် web server တစ်ခုပါ။