I have a middleware definition in the traefik.toml
[http.middlewares]
[http.middlewares.nextcloud-redirectregex.redirectRegex]
permanent = true
regex = "https://(.*)/.well-known/(card|cal)dav"
replacement = "https://${1}/remote.php/dav/"
(When I change it so that the syntax is invalid, I get an error, so I'm pretty sure, the file gets loaded.) However, in the dashboard and logs the "nextcloud-redirectregex" middleware is not to be found. Also, when referring to it with
traefik.http.routers.nextcloud.middlewares=nextcloud-redirectregex@file
I get "middleware "nextcloud-redirectregex@file" does not exist". Defining the same rule in a Docker compose file works.
Do you have any error logs generated by Traefik? If you don't see the middleware in the dashboard that means it has not been loaded correctly and there should be any log entry explaining the reason.
I couldn't find any mention of the middleware in the logs. Only the internal middlewares appeared.
cakiwi
May 19, 2021, 1:27am
#4
Tim-Erwin:
traefik.toml
This is usually the static config file. Middlewares need to be configured in a dynamic provider.
This can be defined in docker labels or in a file provider in toml format. You will have to configure the file provider to file path or directory.
https://doc.traefik.io/traefik/providers/file/#traefik-file
sondt
July 6, 2021, 4:52pm
#5
I also got the same, no idea why it only works when I define in docker-compose labels
[http.middlewares.nextcloudHeader.headers]
stsSeconds = 15552000
stsIncludeSubdomains = true
stsPreload = true
forceSTSHeader = true
[http.middlewares.nextcloudRedirect.redirectRegex]
regex = "https://(.*)/.well-known/(card|cal)dav"
replacement = "https://${1}/remote.php/dav/"
permanent = true
=> Not work
- "traefik.http.middlewares.nextcloudHeader.headers.stsSeconds=15552000"
- "traefik.http.middlewares.nextcloudHeader.headers.stsIncludeSubdomains=true"
- "traefik.http.middlewares.nextcloudHeader.headers.stsPreload=true"
- "traefik.http.middlewares.nextcloudHeader.headers.forceSTSHeader=true"
- "traefik.http.middlewares.nextcloudRedirect.redirectRegex.regex=https://(.*)/.well-known/(card|cal)dav"
- "traefik.http.middlewares.nextcloudRedirect.redirectRegex.replacement=https://$${1}/remote.php/dav/"
- "traefik.http.middlewares.nextcloudRedirect.redirectRegex.permanent=true"
=> Work
and always have this for both cases
- traefik.enable=true
- traefik.http.routers.nextcloud.rule=Host(`${NEXTCLOUD_SUBDOMAIN}.${DOMAIN_NAME}`)
- traefik.http.routers.nextcloud.tls.certresolver=myresolver
- traefik.http.routers.nextcloud.entrypoints=websecure
- traefik.http.routers.nextcloud.middlewares=nextcloudHeader,nextcloudRedirect
cakiwi
July 9, 2021, 11:58am
#6
You have the same? You put the dynamic configuration in the static configuration file?
The answer is the same, put the dynamic configuration in a file-provider.