aboutsummaryrefslogtreecommitdiffhomepage
path: root/modules
AgeCommit message (Collapse)Author
2024-12-03fileserver: Add `first_exist_fallback` strategy for `try_files` (#6699)Kévin Dunglas
* feat: add first_exist_or_fallback strategy for try_files * fix tests * linter
2024-12-02caddyhttp: Add `{?query}` placeholder (#6714)Francis Lavoie
* caddyhttp: Add `{prefixed_query}` placeholder * fastcgi: Preserve query during canonical redirect * Use orig_uri instead for the redirect, shorter Caddyfile shortcut
2024-11-22requestbody: Type-based error handling for `MaxBytesError` (#6701)Rishita Shaw
* fix: handle "request body too large" error using type assertion * fix: address overlooked nil check for MaxBytesError * fix: replace type assertion with errors.As() for MaxBytesError
2024-11-21fastcgi: remove dir redirection when useless in php_fastcgi (#6698)Kévin Dunglas
* perf: remove dir redirection when useless in php_fastcgi * fix test * review * fix * fix * simplify * simplify again * restore test * add test
2024-11-19caddyhttp: Set default ReadHeaderTimeout (1 min)Matthew Holt
Ref. #6663
2024-11-13core: Implement FastAbs to avoid repeated os.Getwd calls (#6687)Francis Lavoie
* core: Implement FastAbs to avoid repeated os.Getwd calls * Lint * Rename files
2024-11-12reverseproxy: Revert #4952 - don't ignore context cancellation in stream modeMatthew Holt
i.e. Revert commit f5dce84a7028d1b116db7fead27ff8b2506baf78 Two years ago, the patch in #4952 was a seemingly necessary way to fix an issue (sort of an edge case), but it broke other more common use cases (see #6666). Now, as of #6669, it seems like the original issue can no longer be replicated, so we are reverting that patch, because it was incorrect anyway. If it turns out the original issue returns, a more proper patch may be in #6669 (even if used as a baseline for a future fix). A potential future fix could be an opt-in setting.
2024-11-07reverseproxy: Allow `0` as weights for `weighted_round_robin` (#6681)Sucipto
* Allow 0 as weights Change positive to non-negative * reverseproxy: allow 0 as weighted round robin value * test: add more wrr select test --------- Co-authored-by: peanutduck <[email protected]>
2024-11-05caddytls: Allow disabling storage cleaning, avoids writing two files (#6593)Francis Lavoie
2024-11-05rewrite: Don't add / in Caddyfile, do it after replacer (#6662)Francis Lavoie
2024-11-05fileserver: Add `file_limit` option for browse (to be experimental) (#6648)Atakan Yenel
* Add file_limit option for file_server browse * Move file_limit inside browse. * add file_server_file_limit caddyfile adapt test.
2024-11-04caddyhttp: Add `MatchWithError` to replace SetVar hack (#6596)Francis Lavoie
* caddyhttp: Add `MatchWithError` to replace SetVar hack * Error in IP matchers on TLS handshake not complete * Use MatchWithError everywhere possible * Move implementations to MatchWithError versions * Looser interface checking to allow fallback * CEL factories can return RequestMatcherWithError * Clarifying comment since it's subtle that an err is returned * Return 425 Too Early status in IP matchers * Keep AnyMatch signature the same for now * Apparently Deprecated can't be all-uppercase to get IDE linting * Linter
2024-11-04forwardauth: Skip copying missing response headers (#6608)Francis Lavoie
2024-11-01events: Use `WithLazy` to prevent eager serialization of the event data (#6671)Andreas Kohn
2024-10-31fileserver: Fix Caddyfile parsingMatthew Holt
Reported at https://github.com/mholt/caddy-sqlite-fs/issues/3
2024-10-22reverseproxy: Sync changes from stdlib for 1xx handling (#6656)Francis Lavoie
* reverseproxy: Sync changes from stdlib for 1xx handling Sourced from https://github.com/golang/go/commit/960654be0c4ad7918376e2e1d47491c9bc7520e0 * Use clear() https://github.com/golang/go/commit/3bc28402fae2a1646e4d2756344b5eb34994d25f
2024-10-21reverseproxy: Fix log messageMatthew Holt
Fixes regression from #6560
2024-10-21tracing: Add `spanID` field to access logs and `http.vars.span_id` ↵Yifan Yang
placeholder (#6646) * logging: Add spanID field to access logs when tracing is enabled Signed-off-by: YifanYang6 <[email protected]> * tracing: add `http.vars.span_id` placeholder when tracing is enabled Signed-off-by: YifanYang6 <[email protected]> --------- Signed-off-by: YifanYang6 <[email protected]>
2024-10-20fileserver: fix try_policy when instantiating file matcher from CEL (#6624)Logan Fleur
Co-authored-by: Francis Lavoie <[email protected]>
2024-10-18metrics: move `metrics` up, outside `servers` (#6606)Mohammed Al Sahaf
* metrics: move `metrics` up, outside `servers` This change moves the metrics configuration from per-server level to a single config knob within the `http` app. Enabling `metrics` in any of the configured servers inside `http` enables metrics for all servers. Fix #6604 Signed-off-by: Mohammed Al Sahaf <[email protected]> * normalize domain name --------- Signed-off-by: Mohammed Al Sahaf <[email protected]>
2024-10-15caddyhttp: Close http3 server gracefully (#6213)WeidiDeng
* close http3 server gracefully * update server field * update from upstream --------- Co-authored-by: Matt Holt <[email protected]>
2024-10-15chore: update quic-go to v0.48.0 (#6627)Marten Seemann
2024-10-11reverseproxy: Use correct cases for websocket related headers (#6621)WeidiDeng
Co-authored-by: Francis Lavoie <[email protected]>
2024-10-10docs: expand proxy protocol docs (#6620)Mohammed Al Sahaf
2024-10-07caddytls: Drop `rate_limit` and `burst`, has been deprecated (#6611)Francis Lavoie
2024-10-04caddyhttp: Use internal issuer for IPs when no APs configuredMatthew Holt
This fixes a regression in 2.8 where IP addresses would be considered qualifying for public certs by auto-HTTPS. The default issuers do not issue IP certs at this time, so if no APs are explicitly configured, we assign them to the internal issuer. We have to add a couple lines of code because CertMagic can no longer consider IPs as not qualifying for public certs, since there are public CAs that issue IP certs. This edge case is specific to Caddy's auto-HTTPS. Without this patch, Caddy will try using Let's Encrypt or ZeroSSL's ACME endpoint to get IP certs, neither of which support that.
2024-10-02metrics: scope metrics to active config, add optional per-host metrics (#6531)v2.9.0-beta.1Mohammed Al Sahaf
* Add per host config * Pass host label when option is enabled * Test per host enabled * metrics: scope metrics per loaded config * doc and linter Signed-off-by: Mohammed Al Sahaf <[email protected]> * inject the custom registry into the admin handler Co-Authored-By: Dave Henderson <[email protected]> * remove `TODO` comment * fixes Signed-off-by: Mohammed Al Sahaf <[email protected]> * refactor to delay metrics admin handler provision Signed-off-by: Mohammed Al Sahaf <[email protected]> --------- Signed-off-by: Mohammed Al Sahaf <[email protected]> Co-authored-by: Hussam Almarzooq <[email protected]> Co-authored-by: Dave Henderson <[email protected]>
2024-10-02caddyhttp: Implement `auto_https prefer_wildcard` option (#6146)Francis Lavoie
* Allow specifying multiple `auto_https` options * Implement `auto_https prefer_wildcard` option * Adapt tests, add mock DNS module for config testing * Rebase fix
2024-10-02caddyhttp: Escaping placeholders in CEL, add `vars` and `vars_regexp` (#6594)Francis Lavoie
* caddyhttp: Escaping placeholders in CEL * Simplify some of the test cases * Implement vars and vars_regexp in CEL * dupl lint is dumb * Better consts for the placeholder CEL shortcut * Bump CEL version, register a few extensions * Refactor s390x test script for readability * Add retries for s390x to smooth over flakiness * Switch to `ph` for the CEL shortcut (match it in templates cause why not)
2024-10-01cmd: Better error handling when reloading (#6601)Matt Holt
* caddyhttp: Limit auto-HTTPS error logs to 100 domains * Improve error message and increase error size limit
2024-10-01caddytls: Support new tls.context module (#6369)Matt Holt
* caddytls: Support new tls.context module This allows modules to manipulate the context passed into CertMagic's GetCertificate function, which can be useful for tracing/metrics, or other custom logic. This is experimental and may resolve the request of a sponsor, so we'll see how it goes! * Derpy derp
2024-10-01http: ReponseWriter prefer ReadFrom if available (#6565)WeidiDeng
Co-authored-by: Matt Holt <[email protected]>
2024-10-01chore: Adjust incorrect `reverse_proxy` Caddyfile comment (#6598)Francis Lavoie
2024-10-01caddyhttp: Fix listener wrapper regression from #6573 (#6599)Aaron Paterson
2024-09-30core: Implement socket activation listeners (#6573)Aaron Paterson
* caddy adapt for listen_protocols * adapt listen_socket * allow multiple listen sockets for port ranges and readd socket fd listen logic * readd logic to start servers according to listener protocols * gofmt * adapt caddytest * gosec * fmt and rename listen to listenWithSocket * fmt and rename listen to listenWithSocket * more consistent error msg * non unix listenReusableWithSocketFile * remove unused func * doc comment typo * nonosec * commit * doc comments * more doc comments * comment was misleading, cardinality did not change * addressesWithProtocols * update test * fd/ and fdgram/ * rm addr * actually write... * i guess we doin' "skip": now * wrong var in placeholder * wrong var in placeholder II * update param name in comment * dont save nil file pointers * windows * key -> parsedKey * osx * multiple default_bind with protocols * check for h1 and h2 listener netw
2024-09-29doc: remove docs of deprecated directives (#6566)Mohammed Al Sahaf
Co-authored-by: Francis Lavoie <[email protected]>
2024-09-26caddyhttp: Optimize logs using zap's WithLazy() (#6590)Alexander Stecher
* uses zap's .WithLazy with a cloned request * fixes the cloning * adds comment explaining why cloning is faster
2024-09-25chore: Use slices package where possible (#6585)Francis Lavoie
* chore: Use slices package where possible * More, mostly using ContainsFunc * Even more slice operations
2024-09-25caddytls: Give a better error message when given encrypted private keys (#6591)Francis Lavoie
2024-09-21caddyhttp: enable qlog, controlled by QLOGDIR env (#6581)Marten Seemann
2024-09-16ci: update the linter action version (#6575)Mohammed Al Sahaf
* ci: update the linter action version Signed-off-by: Mohammed Al Sahaf <[email protected]> * exclude rule `G115`; disable deprecated linter Signed-off-by: Mohammed Al Sahaf <[email protected]> --------- Signed-off-by: Mohammed Al Sahaf <[email protected]>
2024-09-13perf: use zap's Check() to prevent useless allocs (#6560)Kévin Dunglas
* perf: use zap's Check() to prevent useless allocs * fix * fix * fix * fix * restore previous replacer behavior * fix linter
2024-09-13rewrite: Avoid panic on bad arg count for `uri` (#6571)mister-turtle
2024-09-11caddytls: Add sni_regexp matcher (#6569)vnxme
2024-09-03caddyhttp: Make route provisioning idempotent (#6558)Jesper Brix Rosenkilde
ref: https://github.com/caddyserver/caddy/issues/6551
2024-08-30reverse_proxy: add placeholder http.reverse_proxy.retries (#6553)Steffen Busch
* Add placeholder http.reverse_proxy.lb.retries * Renamed placeholder to http.reverse_proxy.retries
2024-08-30fileserver: browse: Configurable default sort (#6502)lollipopkit🏳️‍⚧️
* fileserver: add `sort` options * fix: test * fileserver: check options in `Provison` * fileserver: more obvious err alerts in sort options * fileserver: move `sort` to `browse` --------- Co-authored-by: Matt Holt <[email protected]>
2024-08-30rewrite: Only serialize request if necessary (#6541)Alexander Stecher
* Prevents serializing the caddy request if log level is not debug. * Extracts message to const.
2024-08-27tls: use Go default kex for the moment that include PQC (#6542)Bas Westerbaan
By default Go 1.23 enables X25519Kyber768, a post-quantum key agreement method that is enabled by default on Chrome. Go 1.23 does not expose the CurveID, so we cannot add it by specifying it in CurvePreferences. The reason is that X25519Kyber768 is a preliminary key agreement that will be supplanted by X25519MLKEM768. For the moment there is value in enabling it. A consequence of this is that by default Caddy will enable support for P-384 and P-521. This PR also removes the special code to add support for X25519Kyber768 via the Cloudflare Go branch. Cf #6540
2024-08-23ci: build and test with Go 1.23 (#6526)Kévin Dunglas
* chore: build and test with Go 1.23 * ci: bump golangci-lint to v1.60 * fix: make properly wrap errors * ci: remove Go 1.21