dunglas / frankenphp

🧟 The modern PHP app server
https://frankenphp.dev
MIT License
6.33k stars 200 forks source link

Multisite with binary #862

Open te-deum opened 3 weeks ago

te-deum commented 3 weeks ago

Describe you feature request

I would like to know if it's possible to host multiple website with the FrankenPHP binary like Caddy can do with a JSON configuration file ?

My project use Laravel and is a SPA with Vue. I use a load balancer as reverse proxy to manage TLS connexion to my project. I actually use Nginx as HTML server and everything is working well.

I want to try and test FrankenPHP but I can't get multiple site working with the binary. I try to give a config JSON file without success :-( Here is the simple JSON that I try :

:8081 {
    root * /data/app/public
    encode zstd gzip br
}

:8082 {
    root * /data/demo/public
    encode zstd gzip br
}

:8083 {
    root * /data/beta/public
    encode zstd gzip br
}

Any idea if it's possible to do what I want ?

withinboredom commented 3 weeks ago

If you are running them all on different ports, why not run a separate process for each of them?

nickchomey commented 2 weeks ago

I'm not OP but I suspect that the ports don't need to be different - they just happened to implement it that way while figuring things out. Assuming that they could all use the same port, the question still remains - can you have multiple sites in a frankenphp binary?

dunglas commented 2 weeks ago

Yes. It's just a Caddy module, all Caddy features are supported.

rikwillems commented 4 days ago

@te-deum see the Caddyfile that FrankenPHP uses: https://github.com/dunglas/frankenphp/blob/main/caddy/frankenphp/Caddyfile

You can use the environment variable CADDY_EXTRA_CONFIG to inject what you want. Or mount your own Caddyfile.