Strapi mounts each plugin's admin API at its own top-level path (/content-manager, /upload, /i18n, ...), not nested under /admin as previously assumed. That broke the dashboard widgets: recent/count documents calls landed on the frontend instead of Strapi. List every prefix actually used by the installed plugins (core-bundled ones plus users-permissions and cloud from cms/package.json) explicitly in the Caddyfile.
43 lines
1.2 KiB
Caddyfile
43 lines
1.2 KiB
Caddyfile
{
|
|
email {$ACME_EMAIL}
|
|
}
|
|
|
|
(security_headers) {
|
|
header {
|
|
Strict-Transport-Security "max-age=31536000; includeSubDomains"
|
|
X-Content-Type-Options "nosniff"
|
|
X-Frame-Options "SAMEORIGIN"
|
|
Referrer-Policy "strict-origin-when-cross-origin"
|
|
-Server
|
|
}
|
|
}
|
|
|
|
{$PUBLIC_DOMAIN} {
|
|
import security_headers
|
|
encode zstd gzip
|
|
|
|
# Strapi mounts each of its (and its plugins') admin APIs at its own
|
|
# top-level path, not all under /admin - the admin panel's dashboard
|
|
# widgets, media library, i18n, etc each call their own plugin prefix.
|
|
# This list is every @strapi/* package in cms/package.json plus the
|
|
# core-bundled plugins (content-manager, content-type-builder, upload,
|
|
# i18n, email, content-releases, review-workflows). Adding a new Strapi
|
|
# plugin later means adding its prefix here too.
|
|
# None of this touches /api, reserved for the frontend's own Nitro
|
|
# endpoints.
|
|
@cms path /admin* /content-manager* /content-type-builder* /upload*\
|
|
/i18n* /email* /content-releases* /review-workflows*\
|
|
/users-permissions* /cloud*
|
|
handle @cms {
|
|
# Uploaded media can be large; Strapi's own limit still applies.
|
|
request_body {
|
|
max_size 100MB
|
|
}
|
|
reverse_proxy cms:1337
|
|
}
|
|
|
|
handle {
|
|
reverse_proxy frontend:3000
|
|
}
|
|
}
|