diff --git a/caddy/caddy.go b/caddy/caddy.go index a6f7aa6ca..439e0f624 100644 --- a/caddy/caddy.go +++ b/caddy/caddy.go @@ -26,9 +26,14 @@ const defaultDocumentRoot = "public" func init() { caddy.RegisterModule(FrankenPHPApp{}) caddy.RegisterModule(FrankenPHPModule{}) + httpcaddyfile.RegisterGlobalOption("frankenphp", parseGlobalOption) + httpcaddyfile.RegisterHandlerDirective("php", parseCaddyfile) + httpcaddyfile.RegisterDirectiveOrder("php", "before", "file_server") + httpcaddyfile.RegisterDirective("php_server", parsePhpServer) + httpcaddyfile.RegisterDirectiveOrder("php_server", "before", "file_server") } type mainPHPinterpreterKeyType int diff --git a/caddy/caddy_test.go b/caddy/caddy_test.go index e487c2861..aa5c7a379 100644 --- a/caddy/caddy_test.go +++ b/caddy/caddy_test.go @@ -150,7 +150,6 @@ func TestPHPServerDirective(t *testing.T) { https_port 9443 frankenphp - order php_server before reverse_proxy } localhost:9080 { diff --git a/caddy/frankenphp/Caddyfile b/caddy/frankenphp/Caddyfile index ae2e5c5ad..fa83c7f5d 100644 --- a/caddy/frankenphp/Caddyfile +++ b/caddy/frankenphp/Caddyfile @@ -5,12 +5,6 @@ #worker /path/to/your/worker.php {$FRANKENPHP_CONFIG} } - - # https://caddyserver.com/docs/caddyfile/directives#sorting-algorithm - order mercure after encode - order vulcain after reverse_proxy - order php_server before file_server - order php before file_server } {$CADDY_EXTRA_CONFIG} @@ -19,9 +13,8 @@ #log { # # Redact the authorization query parameter that can be set by Mercure # format filter { - # wrap console # fields { - # uri query { + # request>uri query { # replace authorization REDACTED # } # } diff --git a/caddy/go.mod b/caddy/go.mod index 763e49ea1..d7408c77c 100644 --- a/caddy/go.mod +++ b/caddy/go.mod @@ -7,12 +7,12 @@ replace github.com/dunglas/frankenphp => ../ retract v1.0.0-rc.1 // Human error require ( - github.com/caddyserver/caddy/v2 v2.8.0 + github.com/caddyserver/caddy/v2 v2.8.1 github.com/caddyserver/certmagic v0.21.2 github.com/dunglas/caddy-cbrotli v1.0.0 github.com/dunglas/frankenphp v1.1.5 - github.com/dunglas/mercure/caddy v0.15.11 - github.com/dunglas/vulcain/caddy v1.0.2 + github.com/dunglas/mercure/caddy v0.16.1 + github.com/dunglas/vulcain/caddy v1.0.4 github.com/spf13/cobra v1.8.0 go.uber.org/zap v1.27.0 ) @@ -27,6 +27,8 @@ require ( github.com/Masterminds/semver/v3 v3.2.1 // indirect github.com/Masterminds/sprig/v3 v3.2.3 // indirect github.com/MauriceGit/skiplist v0.0.0-20211105230623-77f5c8d3e145 // indirect + github.com/MicahParks/jwkset v0.5.18 // indirect + github.com/MicahParks/keyfunc/v3 v3.3.3 // indirect github.com/Microsoft/go-winio v0.6.2 // indirect github.com/RoaringBitmap/roaring v1.9.3 // indirect github.com/alecthomas/chroma/v2 v2.14.0 // indirect @@ -47,14 +49,14 @@ require ( github.com/dlclark/regexp2 v1.11.0 // indirect github.com/dolthub/maphash v0.1.0 // indirect github.com/dunglas/httpsfv v1.0.2 // indirect - github.com/dunglas/mercure v0.15.11 // indirect - github.com/dunglas/vulcain v1.0.2 // indirect + github.com/dunglas/mercure v0.16.1 // indirect + github.com/dunglas/vulcain v1.0.4 // indirect github.com/dustin/go-humanize v1.0.1 // indirect github.com/felixge/httpsnoop v1.0.4 // indirect github.com/fsnotify/fsnotify v1.7.0 // indirect github.com/fxamacker/cbor/v2 v2.6.0 // indirect github.com/gammazero/deque v0.2.1 // indirect - github.com/getkin/kin-openapi v0.123.0 // indirect + github.com/getkin/kin-openapi v0.124.0 // indirect github.com/go-chi/chi/v5 v5.0.12 // indirect github.com/go-jose/go-jose/v3 v3.0.3 // indirect github.com/go-kit/kit v0.13.0 // indirect @@ -86,7 +88,7 @@ require ( github.com/huandu/xstrings v1.4.0 // indirect github.com/imdario/mergo v0.3.16 // indirect github.com/inconshreveable/mousetrap v1.1.0 // indirect - github.com/invopop/yaml v0.2.0 // indirect + github.com/invopop/yaml v0.3.1 // indirect github.com/jackc/chunkreader/v2 v2.0.1 // indirect github.com/jackc/pgconn v1.14.3 // indirect github.com/jackc/pgio v1.0.0 // indirect @@ -181,7 +183,7 @@ require ( go.uber.org/zap/exp v0.2.0 // indirect golang.org/x/crypto v0.23.0 // indirect golang.org/x/crypto/x509roots/fallback v0.0.0-20240529182030-349231f7e4e4 // indirect - golang.org/x/exp v0.0.0-20240529005216-23cca8864a10 // indirect + golang.org/x/exp v0.0.0-20240530194437-404ba88c7ed0 // indirect golang.org/x/mod v0.17.0 // indirect golang.org/x/net v0.25.0 // indirect golang.org/x/sync v0.7.0 // indirect diff --git a/caddy/go.sum b/caddy/go.sum index 4cb09f865..810a623c2 100644 --- a/caddy/go.sum +++ b/caddy/go.sum @@ -32,6 +32,10 @@ github.com/Masterminds/sprig/v3 v3.2.3/go.mod h1:rXcFaZ2zZbLRJv/xSysmlgIM1u11eBa github.com/MauriceGit/skiplist v0.0.0-20191117202105-643e379adb62/go.mod h1:877WBceefKn14QwVVn4xRFUsHsZb9clICgdeTj4XsUg= github.com/MauriceGit/skiplist v0.0.0-20211105230623-77f5c8d3e145 h1:1yw6O62BReQ+uA1oyk9XaQTvLhcoHWmoQAgXmDFXpIY= github.com/MauriceGit/skiplist v0.0.0-20211105230623-77f5c8d3e145/go.mod h1:877WBceefKn14QwVVn4xRFUsHsZb9clICgdeTj4XsUg= +github.com/MicahParks/jwkset v0.5.18 h1:WLdyMngF7rCrnstQxA7mpRoxeaWqGzPM/0z40PJUK4w= +github.com/MicahParks/jwkset v0.5.18/go.mod h1:q8ptTGn/Z9c4MwbcfeCDssADeVQb3Pk7PnVxrvi+2QY= +github.com/MicahParks/keyfunc/v3 v3.3.3 h1:c6j9oSu1YUo0k//KwF1miIQlEMtqNlj7XBFLB8jtEmY= +github.com/MicahParks/keyfunc/v3 v3.3.3/go.mod h1:f/UMyXdKfkZzmBeBFUeYk+zu066J1Fcl48f7Wnl5Z48= github.com/Microsoft/go-winio v0.6.0/go.mod h1:cTAf44im0RAYeL23bpB+fzCyDH2MJiz2BO69KH/soAE= github.com/Microsoft/go-winio v0.6.2 h1:F2VQgta7ecxGYO8k3ZZz3RS8fVIXVxONVUPlNERoyfY= github.com/Microsoft/go-winio v0.6.2/go.mod h1:yd8OoFMLzJbo9gZq8j5qaps8bJ9aShtEA8Ipt1oGCvU= @@ -87,8 +91,8 @@ github.com/bits-and-blooms/bitset v1.2.0/go.mod h1:gIdJ4wp64HaoK2YrL1Q5/N7Y16edY github.com/bits-and-blooms/bitset v1.12.0/go.mod h1:7hO7Gc7Pp1vODcmWvKMRA9BNmbv6a/7QIWpPxHddWR8= github.com/bits-and-blooms/bitset v1.13.0 h1:bAQ9OPNFYbGHV6Nez0tmNI0RiEu7/hxlYJRUA0wFAVE= github.com/bits-and-blooms/bitset v1.13.0/go.mod h1:7hO7Gc7Pp1vODcmWvKMRA9BNmbv6a/7QIWpPxHddWR8= -github.com/caddyserver/caddy/v2 v2.8.0 h1:7ZCvB9R7qBsEydqBkYCOHaMNrDEF/fj0ZouySV2D474= -github.com/caddyserver/caddy/v2 v2.8.0/go.mod h1:fb5FjJLu9ii9ojskkUk8kSYDYy4DBxR0GMKLA/4WaME= +github.com/caddyserver/caddy/v2 v2.8.1 h1:UVWB6J5f/GwHPyvdTrm0uM7YhfaWb4Ztdrp/z6ROHsM= +github.com/caddyserver/caddy/v2 v2.8.1/go.mod h1:fb5FjJLu9ii9ojskkUk8kSYDYy4DBxR0GMKLA/4WaME= github.com/caddyserver/certmagic v0.21.2 h1:O18LtaYBGDooyy257cYePnhp4lPfz6TaJELil6Q1fDg= github.com/caddyserver/certmagic v0.21.2/go.mod h1:Zq6pklO9nVRl3DIFUw9gVUfXKdpc/0qwTUAQMBlfgtI= github.com/caddyserver/zerossl v0.1.3 h1:onS+pxp3M8HnHpN5MMbOMyNjmTheJyWRaZYwn+YTAyA= @@ -146,14 +150,14 @@ github.com/dunglas/caddy-cbrotli v1.0.0 h1:+WNqXBkWyMcIpXB2rVZ3nwcElUbuAzf0kPxNX github.com/dunglas/caddy-cbrotli v1.0.0/go.mod h1:KZsUu3fnQBgO0o3YDoQuO3Z61dFgUncr1F8rg8acwQw= github.com/dunglas/httpsfv v1.0.2 h1:iERDp/YAfnojSDJ7PW3dj1AReJz4MrwbECSSE59JWL0= github.com/dunglas/httpsfv v1.0.2/go.mod h1:zID2mqw9mFsnt7YC3vYQ9/cjq30q41W+1AnDwH8TiMg= -github.com/dunglas/mercure v0.15.11 h1:zTvii8/gwa64Bn3ql3qA30zc5X4Q1nquLxCQ5uOHSG4= -github.com/dunglas/mercure v0.15.11/go.mod h1:RcT3C/VS/Va4EatAYbpbKh1tO1296B7MQOVPWq4pVPA= -github.com/dunglas/mercure/caddy v0.15.11 h1:11SzGl55LQemzrNRgwpIdiE5tcczadF4Of9aYaGfJ40= -github.com/dunglas/mercure/caddy v0.15.11/go.mod h1:o4Ib7uTsw4zR5NSQs4V//J24lcDNF6WSLO1rITchVLg= -github.com/dunglas/vulcain v1.0.2 h1:SVZ1zPn4sw5xC0oVOoUdw+5nQF1yZ5tyJkyzWtZ7vTw= -github.com/dunglas/vulcain v1.0.2/go.mod h1:KcW9ni72f6qjfxMq+/yvHT7ZSbdQErEwj4cWNaTkS/k= -github.com/dunglas/vulcain/caddy v1.0.2 h1:nTR5uGHPUHj8D5oI0E8TpZ0BMSTlqQvsQD1TMaNJ2mk= -github.com/dunglas/vulcain/caddy v1.0.2/go.mod h1:t9P6SbtnTj0qyGaIx765YjthZ0hxLYutvM4+oKuVG68= +github.com/dunglas/mercure v0.16.1 h1:dPMpibNPymfLf7x3ckJdI6QBISkB5ZOc01+3SXzBJAw= +github.com/dunglas/mercure v0.16.1/go.mod h1:p3oCWYJUkAu3PsRJD4mxIHOr5G/jHNKBrt0m8cgrn7c= +github.com/dunglas/mercure/caddy v0.16.1 h1:vI+tyQWzdidMtvgVWuAIcJ0czJAQbwSvsD0rPHnMrkA= +github.com/dunglas/mercure/caddy v0.16.1/go.mod h1:98golsDT1fpt3vSnjFjA59fiWj1Ww06NCzbxAtR91eU= +github.com/dunglas/vulcain v1.0.4 h1:Jm5a7HZ+0a8sQwCT6HHYhAKUN9lfHr3baNpHVSgf7qE= +github.com/dunglas/vulcain v1.0.4/go.mod h1:yVIfYhpooiFVHGd5AMDNHg9muh/KRkj/dwHI4U5kJ7o= +github.com/dunglas/vulcain/caddy v1.0.4 h1:Xox9NTwDoKnBLA9aQoqv23ctk9Yg0o7EutQi3jMTxtI= +github.com/dunglas/vulcain/caddy v1.0.4/go.mod h1:ZLj2/AVvihD6EH8ILlv1fipmrvrhpvj/xldDq+IWoec= github.com/dustin/go-humanize v1.0.0/go.mod h1:HtrtbFcZ19U5GC7JDqmcUSB87Iq5E25KnS6fMYU6eOk= github.com/dustin/go-humanize v1.0.1 h1:GzkhY7T5VNhEkwH0PVJgjz+fX1rhBrR7pRT3mDkpeCY= github.com/dustin/go-humanize v1.0.1/go.mod h1:Mu1zIs6XwVuF/gI1OepvI0qD18qycQx+mFykh5fBlto= @@ -168,8 +172,8 @@ github.com/fxamacker/cbor/v2 v2.6.0 h1:sU6J2usfADwWlYDAFhZBQ6TnLFBHxgesMrQfQgk1t github.com/fxamacker/cbor/v2 v2.6.0/go.mod h1:pxXPTn3joSm21Gbwsv0w9OSA2y1HFR9qXEeXQVeNoDQ= github.com/gammazero/deque v0.2.1 h1:qSdsbG6pgp6nL7A0+K/B7s12mcCY/5l5SIUpMOl+dC0= github.com/gammazero/deque v0.2.1/go.mod h1:LFroj8x4cMYCukHJDbxFCkT+r9AndaJnFMuZDV34tuU= -github.com/getkin/kin-openapi v0.123.0 h1:zIik0mRwFNLyvtXK274Q6ut+dPh6nlxBp0x7mNrPhs8= -github.com/getkin/kin-openapi v0.123.0/go.mod h1:wb1aSZA/iWmorQP9KTAS/phLj/t17B5jT7+fS8ed9NM= +github.com/getkin/kin-openapi v0.124.0 h1:VSFNMB9C9rTKBnQ/fpyDU8ytMTr4dWI9QovSKj9kz/M= +github.com/getkin/kin-openapi v0.124.0/go.mod h1:wb1aSZA/iWmorQP9KTAS/phLj/t17B5jT7+fS8ed9NM= github.com/go-chi/chi/v5 v5.0.12 h1:9euLV5sTrTNTRUU9POmDUvfxyj6LAABLUcEWO+JJb4s= github.com/go-chi/chi/v5 v5.0.12/go.mod h1:DslCQbL2OYiznFReuXYUmQ2hGd1aDpCnlMNITLSKoi8= github.com/go-jose/go-jose/v3 v3.0.3 h1:fFKWeig/irsp7XD2zBxvnmA/XaRWp5V3CBsZXJF7G7k= @@ -269,8 +273,8 @@ github.com/imdario/mergo v0.3.16/go.mod h1:WBLT9ZmE3lPoWsEzCh9LPo3TiwVN+ZKEjmz+h github.com/inconshreveable/mousetrap v1.0.0/go.mod h1:PxqpIevigyE2G7u3NXJIT2ANytuPF1OarO4DADm73n8= github.com/inconshreveable/mousetrap v1.1.0 h1:wN+x4NVGpMsO7ErUn/mUI3vEoE6Jt13X2s0bqwp9tc8= github.com/inconshreveable/mousetrap v1.1.0/go.mod h1:vpF70FUmC8bwa3OWnCshd2FqLfsEA9PFc4w1p2J65bw= -github.com/invopop/yaml v0.2.0 h1:7zky/qH+O0DwAyoobXUqvVBwgBFRxKoQ/3FjcVpjTMY= -github.com/invopop/yaml v0.2.0/go.mod h1:2XuRLgs/ouIrW3XNzuNj7J3Nvu/Dig5MXvbCEdiBN3Q= +github.com/invopop/yaml v0.3.1 h1:f0+ZpmhfBSS4MhG+4HYseMdJhoeeopbSKbq5Rpeelso= +github.com/invopop/yaml v0.3.1/go.mod h1:PMOp3nn4/12yEZUFfmOuNHJsZToEEOwoWsT+D81KkeA= github.com/jackc/chunkreader v1.0.0/go.mod h1:RT6O25fNZIuasFJRyZ4R/Y2BbhasbmZXF9QQ7T3kePo= github.com/jackc/chunkreader/v2 v2.0.0/go.mod h1:odVSm741yZoC3dpHEUXIqA9tQRhFrgOHwnPIn9lDKlk= github.com/jackc/chunkreader/v2 v2.0.1 h1:i+RDz65UE+mmpjTfyz0MoVTnzeYxroil2G82ki7MGG8= @@ -632,8 +636,8 @@ golang.org/x/crypto v0.23.0 h1:dIJU/v2J8Mdglj/8rJ6UUOM3Zc9zLZxVZwwxMooUSAI= golang.org/x/crypto v0.23.0/go.mod h1:CKFgDieR+mRhux2Lsu27y0fO304Db0wZe70UKqHu0v8= golang.org/x/crypto/x509roots/fallback v0.0.0-20240529182030-349231f7e4e4 h1:4+O65d2kC/+OwkhzSLfWeDqJyhHHsi2LHp/m3fkWQ0I= golang.org/x/crypto/x509roots/fallback v0.0.0-20240529182030-349231f7e4e4/go.mod h1:kNa9WdvYnzFwC79zRpLRMJbdEFlhyM5RPFBBZp/wWH8= -golang.org/x/exp v0.0.0-20240529005216-23cca8864a10 h1:vpzMC/iZhYFAjJzHU0Cfuq+w1vLLsF2vLkDrPjzKYck= -golang.org/x/exp v0.0.0-20240529005216-23cca8864a10/go.mod h1:XtvwrStGgqGPLc4cjQfWqZHG1YFdYs6swckp8vpsjnc= +golang.org/x/exp v0.0.0-20240530194437-404ba88c7ed0 h1:Mi0bCswbz+9cXmwFAdxoo5GPFMKONUpua6iUdtQS7lk= +golang.org/x/exp v0.0.0-20240530194437-404ba88c7ed0/go.mod h1:XtvwrStGgqGPLc4cjQfWqZHG1YFdYs6swckp8vpsjnc= golang.org/x/lint v0.0.0-20190930215403-16217165b5de/go.mod h1:6SW0HCj/g11FgYtHlgUYUwCkIfeOF89ocIRzGO/8vkc= golang.org/x/mod v0.0.0-20190513183733-4bf6d317e70e/go.mod h1:mXi4GBBbnImb6dmsKGUJ2LatrhH/nqhxcFungHvyanc= golang.org/x/mod v0.1.1-0.20191105210325-c90efee705ee/go.mod h1:QqPTAvyqsEbceGzBzNggFXnrqF1CaUcvgkdR5Ot7KZg= @@ -757,7 +761,6 @@ gopkg.in/yaml.v2 v2.2.2/go.mod h1:hI93XBmqTisBFMUTm0b8Fm+jr3Dg1NNxqwp+5A1VGuI= gopkg.in/yaml.v2 v2.3.0/go.mod h1:hI93XBmqTisBFMUTm0b8Fm+jr3Dg1NNxqwp+5A1VGuI= gopkg.in/yaml.v2 v2.4.0/go.mod h1:RDklbk79AGWmwhnvt/jBztapEOGDOx6ZbXqjP6csGnQ= gopkg.in/yaml.v3 v3.0.0-20200313102051-9f266ea9e77c/go.mod h1:K4uyk7z7BCEPqu6E+C64Yfv1cQ7kz7rIZviUmN+EgEM= -gopkg.in/yaml.v3 v3.0.0/go.mod h1:K4uyk7z7BCEPqu6E+C64Yfv1cQ7kz7rIZviUmN+EgEM= gopkg.in/yaml.v3 v3.0.1 h1:fxVm/GzAzEWqLHuvctI91KS9hhNmmWOoWu0XTYJS7CA= gopkg.in/yaml.v3 v3.0.1/go.mod h1:K4uyk7z7BCEPqu6E+C64Yfv1cQ7kz7rIZviUmN+EgEM= honnef.co/go/tools v0.0.1-2019.2.3/go.mod h1:a3bituU0lyd329TUQxRnasdCoJDkEUEAqEt0JzvZhAg= diff --git a/docs/cn/config.md b/docs/cn/config.md index 4b261f814..9802881db 100644 --- a/docs/cn/config.md +++ b/docs/cn/config.md @@ -28,8 +28,6 @@ RUN cp $PHP_INI_DIR/php.ini-production $PHP_INI_DIR/php.ini { # 启用 FrankenPHP frankenphp - # 配置何时必须执行指令 - order php_server before file_server } localhost { diff --git a/docs/cn/laravel.md b/docs/cn/laravel.md index b493a3625..6a0cc711a 100644 --- a/docs/cn/laravel.md +++ b/docs/cn/laravel.md @@ -22,7 +22,6 @@ docker run -p 80:80 -p 443:443 -p 443:443/udp -v $PWD:/app dunglas/frankenphp ```caddyfile { frankenphp - order php_server before file_server } # 服务器的域名 diff --git a/docs/config.md b/docs/config.md index 8350581c7..cf1866d84 100644 --- a/docs/config.md +++ b/docs/config.md @@ -28,8 +28,6 @@ Minimal example: { # Enable FrankenPHP frankenphp - # Configure when the directive must be executed - order php_server before file_server } localhost { diff --git a/docs/fr/config.md b/docs/fr/config.md index 9845bbf98..7b248b878 100644 --- a/docs/fr/config.md +++ b/docs/fr/config.md @@ -28,8 +28,6 @@ Exemple minimal : { # Activer FrankenPHP frankenphp - # Configurer l'ordre d'exécution de la directive - order php_server before file_server } localhost { diff --git a/docs/fr/laravel.md b/docs/fr/laravel.md index 681e99f60..29d0aa82c 100644 --- a/docs/fr/laravel.md +++ b/docs/fr/laravel.md @@ -23,7 +23,6 @@ Vous pouvez également exécuter vos projets Laravel avec FrankenPHP depuis votr ```caddyfile { frankenphp - order php_server before file_server } # Le nom de domaine de votre serveur diff --git a/docs/laravel.md b/docs/laravel.md index 07d60a0bc..b424bfcc6 100644 --- a/docs/laravel.md +++ b/docs/laravel.md @@ -22,7 +22,6 @@ Alternatively, you can run your Laravel projects with FrankenPHP from your local ```caddyfile { frankenphp - order php_server before file_server } # The domain name of your server diff --git a/docs/tr/config.md b/docs/tr/config.md index a2b089ae2..e00df9131 100644 --- a/docs/tr/config.md +++ b/docs/tr/config.md @@ -28,8 +28,6 @@ Minimal örnek: { # FrankenPHP'yi aktif et frankenphp - # Yönergenin ne zaman yürütülmesi gerektiğini yapılandırma - order php_server before file_server } localhost { diff --git a/docs/tr/laravel.md b/docs/tr/laravel.md index 28c58b78f..559ced7d3 100644 --- a/docs/tr/laravel.md +++ b/docs/tr/laravel.md @@ -22,7 +22,6 @@ Alternatif olarak, Laravel projelerinizi FrankenPHP ile yerel makinenizden çal ```caddyfile { frankenphp - order php_server before file_server } # Sunucunuzun alan adı