1. Go to this page and download the library: Download mattvb91/caddy-php library. Choose the download type require.
2. Extract the ZIP file and open the index.php.
3. Add this code to the index.php.
<?php
require_once('vendor/autoload.php');
/* Start to develop here. Best regards https://php-download.com/ */
mattvb91 / caddy-php example snippets
$caddy = new Caddy();
$caddy->addApp(
(new Http())->addServer(
'server1', (new Http\Server())->addRoute(
(new Route())->addHandle(
new StaticResponse('Hello world', 200)
)
))
);
$caddy->load();
$caddy = new Caddy();
$caddy->addApp(
(new Http())->addServer(
'server1', (new Http\Server())->addRoute(
(new Route())->addHandle(
new StaticResponse('host test', 200)
)->addMatch((new Host('host_group_name'))
->setHosts(['localhost'])
)
)->addRoute((new Route())
->addHandle(new StaticResponse('Not found', 404))
->addMatch((new Host('notFound'))
->setHosts(['*.localhost'])
)
))
);
$caddy->load();
$caddy->syncHosts('host_group_name'); //Sync from caddy current hostname list
$caddy->removeHostname('host_group_name', 'new.localhost');
$caddy->removeHostname('host_group_name', 'another.localhost');
use mattvb91\CaddyPhp\Caddy;
use mattvb91\CaddyPhp\Config\Apps\Http;
use mattvb91\CaddyPhp\Config\Apps\Http\Server;
use mattvb91\CaddyPhp\Config\Apps\Http\Server\Route;
use mattvb91\CaddyPhp\Config\Apps\Http\Server\Routes\Handle\ReverseProxy;
use mattvb91\CaddyPhp\Config\Apps\Http\Server\Routes\Handle\ReverseProxy\Transport\FastCGI;
use mattvb91\CaddyPhp\Config\Apps\Http\Server\Routes\Handle\ReverseProxy\Upstream;
use mattvb91\CaddyPhp\Config\Apps\Http\Server\Routes\Handle\Subroute;
use mattvb91\CaddyPhp\Config\Apps\Http\Server\Routes\Match\Host;
use mattvb91\CaddyPhp\Config\Apps\Http\Server\Routes\Match\Path;
$apiReverseProxy = (new ReverseProxy())
->addUpstream((new Upstream())
->setDial('laravel-api:9000')
)->addTransport((new FastCGI())
->setRoot('/app/public/index.php')
->setSplitPath([''])
);
$apiMatchPath = (new Path())
->setPaths([
'/api/*',
]);
$backendAPIRoute = (new Route())
->addHandle($apiReverseProxy)
->addMatch($apiMatchPath);
$route = new Route();
$route->addHandle((new Subroute())
->addRoute($backendAPIRoute)
->addRoute((new Route())
->addHandle((new ReverseProxy())
->addUpstream((new Upstream())
->setDial('nextjs:3000')
)
)
)
)->addMatch((new Host())
->setHosts([
'localhost',
])
)->setTerminal(true);
$caddy = new Caddy();
$caddy->addApp((new Http())
->addServer('myplatform', (new Server())
->addRoute($route)
)
);
$caddy->load();