Migrate Traefik HTTPS backend

Hi, Im using Traefik as reverse proxy for my project. I have to route some of my requests to remote server which allows only HTTPS connection.
In version v1 i had my file like below and it worked.

defaultEntryPoints = ["http"]

logLevel = "INFO"
insecureSkipVerify = true

[entryPoints]
  [entryPoints.http]
    address = ":4001"
[file]

[backends]
  [backends.my-service]
    [backends.my-service.servers.server1]
      url = "https://<MY-DOMAIN>"

[frontends]
  [frontends.my-service]
        backend = "my-service."
        passHostHeader = false
      [frontends.my-service.routes.route1]
            rule = "PathPrefix: /api"

After migration to v2 i have:

[log]
  level = "DEBUG"

[entryPoints]
 [entryPoints.web]
   address = ":4001"

[serversTransport]
  insecureSkipVerify = true

[providers.file]
  filename = "/etc/traefik/traefik.toml"

[http]
  # Routers definitions
  [http.routers]
    [http.routers.my-service]
      rule = "PathPrefix(`/api`)"
      service = "my-service"
[http.services]
    [[http.services.my-service.loadBalancer.servers]]
      url = "https://<MY-DOMAIN>"
      passHostHeader = false
      scheme = "https"

Now after accessing localhost:4001/api/something I get 404 page not found.
Im using Traefik in version v2.2.11
Can anyone help me with this problem?

Hello @lukaszbk,

You are mixing the dynamic and static configuration which could work if you reference the actual file but it is not recommended.

Could you share your Traefik logs so we check the configuration applied?

I removed domain name and IP form below logs

level=debug msg="vulcand/oxy/roundrobin/rr: Forwarding this request to URL" Request="{\"Method\":\"GET\",\"URL\":{\"Scheme\":\"\",\"Opaque\":\"\",\"User\":null,\"Host\":\"\",\"Path\":\"/api/user-info\",\"RawPath\":\"\",\"ForceQuery\":false,\"RawQuery\":\"\",\"Fragment\":\"\"},\"Proto\":\"HTTP/1.1\",\"ProtoMajor\":1,\"ProtoMinor\":1,\"Header\":{\"Accept\":[\"text/html,application/xhtml+xml,application/xml;q=0.9,image/webp,*/*;q=0.8\"],\"Accept-Encoding\":[\"gzip, deflate\"],\"Accept-Language\":[\"en-US,en;q=0.5\"],\"Connection\":[\"keep-alive\"],\"Dnt\":[\"1\"],\"Upgrade-Insecure-Requests\":[\"1\"],\"User-Agent\":[\"Mozilla/5.0 (X11; Ubuntu; Linux x86_64; rv:82.0) Gecko/20100101 Firefox/82.0\"],\"X-Forwarded-Host\":[\"localhost:4001\"],\"X-Forwarded-Port\":[\"4001\"],\"X-Forwarded-Proto\":[\"http\"],\"X-Forwarded-Server\":[\"b933c37217cc\"],\"X-Real-Ip\":[\"<SOME-IP>\"]},\"ContentLength\":0,\"TransferEncoding\":null,\"Host\":\"localhost:4001\",\"Form\":null,\"PostForm\":null,\"MultipartForm\":null,\"Trailer\":null,\"RemoteAddr\":\"<SOME-IP>\",\"RequestURI\":\"/api/user-info\",\"TLS\":null}" ForwardURL="https://<MY-DOMAIN>"
level=debug msg="vulcand/oxy/roundrobin/rr: completed ServeHttp on request" Request="{\"Method\":\"GET\",\"URL\":{\"Scheme\":\"\",\"Opaque\":\"\",\"User\":null,\"Host\":\"\",\"Path\":\"/api/user-info\",\"RawPath\":\"\",\"ForceQuery\":false,\"RawQuery\":\"\",\"Fragment\":\"\"},\"Proto\":\"HTTP/1.1\",\"ProtoMajor\":1,\"ProtoMinor\":1,\"Header\":{\"Accept\":[\"text/html,application/xhtml+xml,application/xml;q=0.9,image/webp,*/*;q=0.8\"],\"Accept-Encoding\":[\"gzip, deflate\"],\"Accept-Language\":[\"en-US,en;q=0.5\"],\"Connection\":[\"keep-alive\"],\"Dnt\":[\"1\"],\"Upgrade-Insecure-Requests\":[\"1\"],\"User-Agent\":[\"Mozilla/5.0 (X11; Ubuntu; Linux x86_64; rv:82.0) Gecko/20100101 Firefox/82.0\"],\"X-Forwarded-Host\":[\"localhost:4001\"],\"X-Forwarded-Port\":[\"4001\"],\"X-Forwarded-Proto\":[\"http\"],\"X-Forwarded-Server\":[\"b933c37217cc\"],\"X-Real-Ip\":[\"<SOME-IP>\"]},\"ContentLength\":0,\"TransferEncoding\":null,\"Host\":\"localhost:4001\",\"Form\":null,\"PostForm\":null,\"MultipartForm\":null,\"Trailer\":null,\"RemoteAddr\":\"<SOME-IP>\",\"RequestURI\":\"/api/user-info\",\"TLS\":null}"

I need the logs where we can check the configuration loaded by Traefik, and you can remove or obfuscate the sensible data.

Sorry i misunderstood you, here are my logs with configuration

level=info msg="Traefik version 2.2.11 built on 2020-09-07T14:12:48Z"
level=debug msg="Static configuration loaded {\"global\":{\"checkNewVersion\":true},\"serversTransport\":{\"insecureSkipVerify\":true,\"maxIdleConnsPerHost\":200},\"entryPoints\":{\"web\":{\"address\":\":4001\",\"transport\":{\"lifeCycle\":{\"graceTimeOut\":10000000000},\"respondingTimeouts\":{\"idleTimeout\":180000000000}},\"forwardedHeaders\":{},\"http\":{}}},\"providers\":{\"providersThrottleDuration\":2000000000,\"file\":{\"watch\":true,\"filename\":\"/etc/traefik/traefik.toml\"}},\"log\":{\"level\":\"DEBUG\",\"format\":\"common\"}}"
level=info msg="\nStats collection is disabled.\nHelp us improve Traefik by turning this feature on :)\nMore details on: https://docs.traefik.io/contributing/data-collection/\n"
level=info msg="Starting provider aggregator.ProviderAggregator {}"
level=debug msg="Start TCP Server" entryPointName=web
level=info msg="Starting provider *file.Provider {\"watch\":true,\"filename\":\"/etc/traefik/traefik.toml\"}"
level=info msg="Starting provider *traefik.Provider {}"
level=debug msg="Configuration received from provider file: {\"http\":{\"routers\":{\"my-service\":{\"service\":\"my-service\",\"rule\":\"PathPrefix(`/api`)\"}},\"services\":{\"my-service\":{\"loadBalancer\":{\"servers\":[{\"url\":\"https://<MY-DOMAIN>\"}],\"passHostHeader\":null}}}},\"tcp\":{},\"udp\":{},\"tls\":{}}" providerName=file
level=debug msg="Configuration received from provider internal: {\"http\":{\"services\":{\"noop\":{}}},\"tcp\":{},\"tls\":{}}" providerName=internal
level=debug msg="No entryPoint defined for this router, using the default one(s) instead: [web]" routerName=my-service
level=debug msg="Creating middleware" entryPointName=web routerName=my-service@file serviceName=my-service middlewareName=pipelining middlewareType=Pipelining
level=debug msg="Creating load-balancer" entryPointName=web routerName=my-service@file serviceName=my-service
level=debug msg="Creating server 0 https://<MY-DOMAIN>" serviceName=my-service serverName=0 entryPointName=web routerName=my-service@file
level=debug msg="Added outgoing tracing middleware my-service" middlewareName=tracing middlewareType=TracingForwarder entryPointName=web routerName=my-service@file
level=debug msg="Creating middleware" entryPointName=web middlewareName=traefik-internal-recovery middlewareType=Recovery
level=debug msg="No default certificate, generating one"
level=debug msg="Creating middleware" entryPointName=web routerName=my-service@file serviceName=my-service middlewareName=pipelining middlewareType=Pipelining
level=debug msg="Creating load-balancer" entryPointName=web routerName=my-service@file serviceName=my-service
level=debug msg="Creating server 0 https://<MY-DOMAIN>" serviceName=my-service serverName=0 entryPointName=web routerName=my-service@file
level=debug msg="Added outgoing tracing middleware my-service" routerName=my-service@file middlewareName=tracing middlewareType=TracingForwarder entryPointName=web
level=debug msg="Creating middleware" middlewareName=traefik-internal-recovery middlewareType=Recovery entryPointName=web
level=debug msg="No default certificate, generating one"

I made some tests, and it seems to works.

# Static conf
[entryPoints.web]
    address = ":4001"

[serversTransport]
    insecureSkipVerify = true

[providers.file]
    directory = "./conf"
# dynamic conf
[http.routers.my-service]
    rule = "PathPrefix(`/api`)"
    service = "my-service"

[http.services]
    [[http.services.my-service.loadBalancer.servers]]
        url = "https://whoami:8000"