DMW007 (20.10.2022)
Thema: Traefik 404 not found
-
19.10.2022, 23:05 #1
- Registriert seit
- 19.10.2022
- Beiträge
- 4
Thanked 1 Time in 1 PostTraefik 404 not found
Hi!
Ich habe das Tutorial vom U-Labs Kanal mit Docker / Traefik und NGINX geschaut.
Ich habe in meiner Umgebung 2 Ubuntu 22.0 Server mit Portainer im Swarm.
Meine Domains laufen über Cloudflare (teils mit Proxy aktiviert)
Mein sch*** A1 Modem kann leider nur pro Port eine Weiterleitung, daher kann ich HTTP/HTTPS nur an eine Node im Docker Swarm leiten.
Ich hab Traefik genau wie im Video aufgesetzt (neuere Version gewählt) und das dann mit nginx probiert. Meine Domain zeigt auf meine IP zuhause und ist auch erreichbar. Ich bekomme immer "404 page not found", auch wenn ich den nginx Container richtig mit der Domain Rule verwende. Sieht für mich so aus als gäbe es ein internes routing Problem, wenn auch genau bei der Domain die im nginx Container definiert wurde, ein 404 kommt. Natürlich sind Traefik und Nginx im selben Netz. Ich bekomme jedoch wenn ich den Traefik Container Log aufmache Folgendes:
"time="2022-10-19T21:00:33Z" level=info msg="Configuration loaded from flags."
time="2022-10-19T21:01:03Z" level=error msg="Unable to obtain ACME certificate for domains "haggebuddi.com": unable to generate a certificate for the domains [haggebuddi.com]: error: one or more domains had a problem:\n[haggebuddi.com] acme: error: 400 :: urn:ietf:params:acme:error:tls :: 192.164.108.35: remote error: tls: internal error\n" ACME CA="https://acme-v02.api.letsencrypt.org/directory" providerName=le.acme routerName=https-nginx@docker rule="Host(`haggebuddi.com`)"
"
Liegt das daran, dass ich über Cloudflare für die Domain schon dauernd ein LetsEncrypt Zertifikat bekomme?
Hat aber glaub ich nix damit zu tun, dass es nicht klappt.
Hab jetzt testweise bei mir in AWS nochmal eine frische Ubuntu aufgesetzt mit nur Docker/Compose und dem Traefik und nginx Containern und geht direkt problemlos.
Ich bin echt ratlos und würde mich über Hilfe freuen.
Danke
Ganzen Log (mit Debug Parametern)
Code:Creating traefik_traefik_1 ... done Attaching to traefik_traefik_1 traefik_1 | time="2022-10-19T21:14:45Z" level=info msg="Configuration loaded from flags." traefik_1 | time="2022-10-19T21:14:45Z" level=info msg="Traefik version 2.9.1 built on 2022-10-03T14:22:13Z" traefik_1 | time="2022-10-19T21:14:45Z" level=debug msg="Static configuration loaded {"global":{"checkNewVersion":true},"serversTransport":{"maxIdleConnsPerHost":200},"entryPoints":{"http":{"address":":80","transport":{"lifeCycle":{"graceTimeOut":"10s"},"respondingTimeouts":{"idleTimeout":"3m0s"}},"forwardedHeaders":{},"http":{"redirections":{"entryPoint":{"to":"https","scheme":"https","permanent":true,"priority":2147483646}}},"http2":{"maxConcurrentStreams":250},"udp":{"timeout":"3s"}},"https":{"address":":443","transport":{"lifeCycle":{"graceTimeOut":"10s"},"respondingTimeouts":{"idleTimeout":"3m0s"}},"forwardedHeaders":{},"http":{"tls":{"certResolver":"le"}},"http2":{"maxConcurrentStreams":250},"udp":{"timeout":"3s"}}},"providers":{"providersThrottleDuration":"2s","docker":{"watch":true,"endpoint":"unix:///var/run/docker.sock","defaultRule":"Host(`{{ normalize .Name }}`)","network":"traefik_web","swarmModeRefreshSeconds":"15s"}},"log":{"level":"DEBUG","format":"common"},"certificatesResolvers":{"le":{"acme":{"email":"markus3261@gmail.com","caServer":"https://acme-v02.api.letsencrypt.org/directory","storage":"/letsencrypt/acme.json","keyType":"RSA4096","certificatesDuration":2160,"tlsChallenge":{}}}}}" traefik_1 | time="2022-10-19T21:14:45Z" level=info msg="\nStats collection is disabled.\nHelp us improve Traefik by turning this feature on :)\nMore details on: https://doc.traefik.io/traefik/contributing/data-collection/\n" traefik_1 | time="2022-10-19T21:14:45Z" level=info msg="Starting provider aggregator aggregator.ProviderAggregator" traefik_1 | time="2022-10-19T21:14:45Z" level=debug msg="Starting TCP Server" entryPointName=http traefik_1 | time="2022-10-19T21:14:45Z" level=info msg="Starting provider *traefik.Provider" traefik_1 | time="2022-10-19T21:14:45Z" level=debug msg="*traefik.Provider provider configuration: {}" traefik_1 | time="2022-10-19T21:14:45Z" level=info msg="Starting provider *docker.Provider" traefik_1 | time="2022-10-19T21:14:45Z" level=debug msg="*docker.Provider provider configuration: {"watch":true,"endpoint":"unix:///var/run/docker.sock","defaultRule":"Host(`{{ normalize .Name }}`)","network":"traefik_web","swarmModeRefreshSeconds":"15s"}" traefik_1 | time="2022-10-19T21:14:45Z" level=debug msg="Starting TCP Server" entryPointName=https traefik_1 | time="2022-10-19T21:14:45Z" level=info msg="Starting provider *acme.ChallengeTLSALPN" traefik_1 | time="2022-10-19T21:14:45Z" level=debug msg="*acme.ChallengeTLSALPN provider configuration: {}" traefik_1 | time="2022-10-19T21:14:45Z" level=info msg="Starting provider *acme.Provider" traefik_1 | time="2022-10-19T21:14:45Z" level=debug msg="*acme.Provider provider configuration: {"email":"markus3261@gmail.com","caServer":"https://acme-v02.api.letsencrypt.org/directory","storage":"/letsencrypt/acme.json","keyType":"RSA4096","certificatesDuration":2160,"tlsChallenge":{},"ResolverName":"le","store":{},"TLSChallengeProvider":{},"HTTPChallengeProvider":{}}" traefik_1 | time="2022-10-19T21:14:45Z" level=debug msg="Attempt to renew certificates "720h0m0s" before expiry and check every "24h0m0s"" ACME CA="https://acme-v02.api.letsencrypt.org/directory" providerName=le.acme traefik_1 | time="2022-10-19T21:14:45Z" level=info msg="Testing certificate renew..." providerName=le.acme ACME CA="https://acme-v02.api.letsencrypt.org/directory" traefik_1 | time="2022-10-19T21:14:45Z" level=debug msg="Configuration received: {"http":{"routers":{"http-to-https":{"entryPoints":["http"],"middlewares":["redirect-http-to-https"],"service":"noop@internal","rule":"HostRegexp(`{host:.+}`)","priority":2147483646}},"services":{"noop":{}},"middlewares":{"redirect-http-to-https":{"redirectScheme":{"scheme":"https","port":"443","permanent":true}}},"models":{"https":{"tls":{"certResolver":"le"}}},"serversTransports":{"default":{"maxIdleConnsPerHost":200}}},"tcp":{},"udp":{},"tls":{}}" providerName=internal traefik_1 | time="2022-10-19T21:14:45Z" level=debug msg="Configuration received: {"http":{},"tcp":{},"udp":{},"tls":{}}" providerName=le.acme traefik_1 | time="2022-10-19T21:14:45Z" level=debug msg="Provider connection established with docker 20.10.12 (API 1.41)" providerName=docker traefik_1 | time="2022-10-19T21:14:45Z" level=debug msg="Filtering disabled container" providerName=docker container=traefik-traefik-4478996bdee3fbcd055f7b2d7145e1702e0d81c990b1aecccec2b318a2f62743 traefik_1 | time="2022-10-19T21:14:45Z" level=debug msg="Filtering disabled container" providerName=docker container=homepage-homepage-1-hm996siug5v746zgmwckz0jn4-41a68fe254a373900b0fa34bc6824dabe509fdeaaf3eef62262c37a3827c4f97 traefik_1 | time="2022-10-19T21:14:45Z" level=debug msg="Filtering disabled container" providerName=docker container=portainer-agent-a3dbse86l2x01hqfnftqxxk1l-978zopkx6sp2gkcvo0mn2dyco-946e560e82d1e39844b2f8ab0a878de358f112d1f529712dffcaaa35ef01761d traefik_1 | time="2022-10-19T21:14:45Z" level=debug msg="Filtering disabled container" providerName=docker container=portainer-004747af55826e9543c33aeb277265cd3b9c5434f5a1434d37f645b9a7baad61 traefik_1 | time="2022-10-19T21:14:45Z" level=debug msg="Configuration received: {"http":{"routers":{"nginx":{"service":"nginx-nginx-demo","rule":"Host(`haggebuddi.com`)"}},"services":{"nginx-nginx-demo":{"loadBalancer":{"servers":[{"url":"http://172.26.0.3:80"}],"passHostHeader":true}}}},"tcp":{},"udp":{}}" providerName=docker traefik_1 | time="2022-10-19T21:14:45Z" level=debug msg="No default certificate, fallback to the internal generated certificate" tlsStoreName=default traefik_1 | time="2022-10-19T21:14:45Z" level=debug msg="Added outgoing tracing middleware noop@internal" entryPointName=http routerName=http-to-https@internal middlewareName=tracing middlewareType=TracingForwarder traefik_1 | time="2022-10-19T21:14:45Z" level=debug msg="Creating middleware" entryPointName=http routerName=http-to-https@internal middlewareName=redirect-http-to-https@internal middlewareType=RedirectScheme traefik_1 | time="2022-10-19T21:14:45Z" level=debug msg="Setting up redirection to https 443" routerName=http-to-https@internal middlewareName=redirect-http-to-https@internal middlewareType=RedirectScheme entryPointName=http traefik_1 | time="2022-10-19T21:14:45Z" level=debug msg="Adding tracing to middleware" middlewareName=redirect-http-to-https@internal entryPointName=http routerName=http-to-https@internal traefik_1 | time="2022-10-19T21:14:45Z" level=debug msg="Creating middleware" middlewareName=traefik-internal-recovery middlewareType=Recovery entryPointName=http traefik_1 | time="2022-10-19T21:14:45Z" level=debug msg="No entryPoint defined for this router, using the default one(s) instead: [http https]" routerName=nginx traefik_1 | time="2022-10-19T21:14:45Z" level=debug msg="No default certificate, fallback to the internal generated certificate" tlsStoreName=default traefik_1 | time="2022-10-19T21:14:45Z" level=debug msg="Added outgoing tracing middleware noop@internal" routerName=http-to-https@internal middlewareName=tracing middlewareType=TracingForwarder entryPointName=http traefik_1 | time="2022-10-19T21:14:45Z" level=debug msg="Creating middleware" entryPointName=http routerName=http-to-https@internal middlewareType=RedirectScheme middlewareName=redirect-http-to-https@internal traefik_1 | time="2022-10-19T21:14:45Z" level=debug msg="Setting up redirection to https 443" entryPointName=http routerName=http-to-https@internal middlewareType=RedirectScheme middlewareName=redirect-http-to-https@internal traefik_1 | time="2022-10-19T21:14:45Z" level=debug msg="Adding tracing to middleware" middlewareName=redirect-http-to-https@internal entryPointName=http routerName=http-to-https@internal traefik_1 | time="2022-10-19T21:14:45Z" level=debug msg="Creating middleware" middlewareName=pipelining middlewareType=Pipelining routerName=nginx@docker serviceName=nginx-nginx-demo entryPointName=http traefik_1 | time="2022-10-19T21:14:45Z" level=debug msg="Creating load-balancer" serviceName=nginx-nginx-demo entryPointName=http routerName=nginx@docker traefik_1 | time="2022-10-19T21:14:45Z" level=debug msg="Creating server 0 http://172.26.0.3:80" serverName=0 serviceName=nginx-nginx-demo entryPointName=http routerName=nginx@docker traefik_1 | time="2022-10-19T21:14:45Z" level=debug msg="child http://172.26.0.3:80 now UP" traefik_1 | time="2022-10-19T21:14:45Z" level=debug msg="Propagating new UP status" traefik_1 | time="2022-10-19T21:14:45Z" level=debug msg="Added outgoing tracing middleware nginx-nginx-demo" entryPointName=http routerName=nginx@docker middlewareName=tracing middlewareType=TracingForwarder traefik_1 | time="2022-10-19T21:14:45Z" level=debug msg="Creating middleware" entryPointName=http middlewareType=Recovery middlewareName=traefik-internal-recovery traefik_1 | time="2022-10-19T21:14:45Z" level=debug msg="Creating middleware" middlewareName=pipelining middlewareType=Pipelining entryPointName=https routerName=https-nginx@docker serviceName=nginx-nginx-demo traefik_1 | time="2022-10-19T21:14:45Z" level=debug msg="Creating load-balancer" entryPointName=https routerName=https-nginx@docker serviceName=nginx-nginx-demo traefik_1 | time="2022-10-19T21:14:45Z" level=debug msg="Creating server 0 http://172.26.0.3:80" entryPointName=https serverName=0 routerName=https-nginx@docker serviceName=nginx-nginx-demo traefik_1 | time="2022-10-19T21:14:45Z" level=debug msg="child http://172.26.0.3:80 now UP" traefik_1 | time="2022-10-19T21:14:45Z" level=debug msg="Propagating new UP status" traefik_1 | time="2022-10-19T21:14:45Z" level=debug msg="Added outgoing tracing middleware nginx-nginx-demo" middlewareName=tracing middlewareType=TracingForwarder entryPointName=https routerName=https-nginx@docker traefik_1 | time="2022-10-19T21:14:45Z" level=debug msg="Creating middleware" middlewareType=Recovery entryPointName=https middlewareName=traefik-internal-recovery traefik_1 | time="2022-10-19T21:14:45Z" level=debug msg="Adding route for haggebuddi.com with TLS options default" entryPointName=https traefik_1 | time="2022-10-19T21:14:45Z" level=debug msg="Trying to challenge certificate for domain [haggebuddi.com] found in HostSNI rule" rule="Host(`haggebuddi.com`)" providerName=le.acme ACME CA="https://acme-v02.api.letsencrypt.org/directory" routerName=https-nginx@docker traefik_1 | time="2022-10-19T21:14:45Z" level=debug msg="Looking for provided certificate(s) to validate ["haggebuddi.com"]..." providerName=le.acme ACME CA="https://acme-v02.api.letsencrypt.org/directory" routerName=https-nginx@docker rule="Host(`haggebuddi.com`)" traefik_1 | time="2022-10-19T21:14:45Z" level=debug msg="Domains ["haggebuddi.com"] need ACME certificates generation for domains "haggebuddi.com"." rule="Host(`haggebuddi.com`)" providerName=le.acme ACME CA="https://acme-v02.api.letsencrypt.org/directory" routerName=https-nginx@docker traefik_1 | time="2022-10-19T21:14:45Z" level=debug msg="Loading ACME certificates [haggebuddi.com]..." routerName=https-nginx@docker rule="Host(`haggebuddi.com`)" providerName=le.acme ACME CA="https://acme-v02.api.letsencrypt.org/directory" traefik_1 | time="2022-10-19T21:14:45Z" level=debug msg="Building ACME client..." providerName=le.acme traefik_1 | time="2022-10-19T21:14:45Z" level=debug msg="https://acme-v02.api.letsencrypt.org/directory" providerName=le.acme traefik_1 | time="2022-10-19T21:14:46Z" level=debug msg="Using TLS Challenge provider." providerName=le.acme traefik_1 | time="2022-10-19T21:14:46Z" level=debug msg="legolog: [INFO] [haggebuddi.com] acme: Obtaining bundled SAN certificate" traefik_1 | time="2022-10-19T21:14:47Z" level=debug msg="legolog: [INFO] [haggebuddi.com] AuthURL: https://acme-v02.api.letsencrypt.org/acme/authz-v3/166451089416" traefik_1 | time="2022-10-19T21:14:47Z" level=debug msg="legolog: [INFO] [haggebuddi.com] acme: use tls-alpn-01 solver" traefik_1 | time="2022-10-19T21:14:47Z" level=debug msg="legolog: [INFO] [haggebuddi.com] acme: Trying to solve TLS-ALPN-01" traefik_1 | time="2022-10-19T21:14:47Z" level=debug msg="TLS Challenge Present temp certificate for haggebuddi.com" providerName=tlsalpn.acme traefik_1 | time="2022-10-19T21:14:47Z" level=debug msg="Configuration received: {"http":{},"tcp":{},"udp":{},"tls":{}}" providerName=tlsalpn.acme traefik_1 | time="2022-10-19T21:14:47Z" level=debug msg="No entryPoint defined for this router, using the default one(s) instead: [http https]" routerName=nginx traefik_1 | time="2022-10-19T21:14:47Z" level=debug msg="Adding certificate for domain(s) acme challenge temp,haggebuddi.com" traefik_1 | time="2022-10-19T21:14:47Z" level=debug msg="No default certificate, fallback to the internal generated certificate" tlsStoreName=default traefik_1 | time="2022-10-19T21:14:47Z" level=debug msg="Creating middleware" entryPointName=http routerName=nginx@docker serviceName=nginx-nginx-demo middlewareName=pipelining middlewareType=Pipelining traefik_1 | time="2022-10-19T21:14:47Z" level=debug msg="Creating load-balancer" entryPointName=http routerName=nginx@docker serviceName=nginx-nginx-demo traefik_1 | time="2022-10-19T21:14:47Z" level=debug msg="Creating server 0 http://172.26.0.3:80" serverName=0 routerName=nginx@docker serviceName=nginx-nginx-demo entryPointName=http traefik_1 | time="2022-10-19T21:14:47Z" level=debug msg="child http://172.26.0.3:80 now UP" traefik_1 | time="2022-10-19T21:14:47Z" level=debug msg="Propagating new UP status" traefik_1 | time="2022-10-19T21:14:47Z" level=debug msg="Added outgoing tracing middleware nginx-nginx-demo" middlewareName=tracing middlewareType=TracingForwarder entryPointName=http routerName=nginx@docker traefik_1 | time="2022-10-19T21:14:47Z" level=debug msg="Added outgoing tracing middleware noop@internal" routerName=http-to-https@internal middlewareName=tracing middlewareType=TracingForwarder entryPointName=http traefik_1 | time="2022-10-19T21:14:47Z" level=debug msg="Creating middleware" entryPointName=http routerName=http-to-https@internal middlewareName=redirect-http-to-https@internal middlewareType=RedirectScheme traefik_1 | time="2022-10-19T21:14:47Z" level=debug msg="Setting up redirection to https 443" entryPointName=http routerName=http-to-https@internal middlewareName=redirect-http-to-https@internal middlewareType=RedirectScheme traefik_1 | time="2022-10-19T21:14:47Z" level=debug msg="Adding tracing to middleware" entryPointName=http routerName=http-to-https@internal middlewareName=redirect-http-to-https@internal traefik_1 | time="2022-10-19T21:14:47Z" level=debug msg="Creating middleware" entryPointName=http middlewareName=traefik-internal-recovery middlewareType=Recovery traefik_1 | time="2022-10-19T21:14:47Z" level=debug msg="Creating middleware" middlewareName=pipelining middlewareType=Pipelining routerName=https-nginx@docker serviceName=nginx-nginx-demo entryPointName=https traefik_1 | time="2022-10-19T21:14:47Z" level=debug msg="Creating load-balancer" serviceName=nginx-nginx-demo entryPointName=https routerName=https-nginx@docker traefik_1 | time="2022-10-19T21:14:47Z" level=debug msg="Creating server 0 http://172.26.0.3:80" serverName=0 entryPointName=https routerName=https-nginx@docker serviceName=nginx-nginx-demo traefik_1 | time="2022-10-19T21:14:47Z" level=debug msg="child http://172.26.0.3:80 now UP" traefik_1 | time="2022-10-19T21:14:47Z" level=debug msg="Propagating new UP status" traefik_1 | time="2022-10-19T21:14:47Z" level=debug msg="Added outgoing tracing middleware nginx-nginx-demo" middlewareName=tracing middlewareType=TracingForwarder routerName=https-nginx@docker entryPointName=https traefik_1 | time="2022-10-19T21:14:47Z" level=debug msg="Creating middleware" middlewareType=Recovery entryPointName=https middlewareName=traefik-internal-recovery traefik_1 | time="2022-10-19T21:14:47Z" level=debug msg="Adding route for haggebuddi.com with TLS options default" entryPointName=https traefik_1 | time="2022-10-19T21:14:47Z" level=debug msg="Trying to challenge certificate for domain [haggebuddi.com] found in HostSNI rule" providerName=le.acme ACME CA="https://acme-v02.api.letsencrypt.org/directory" routerName=https-nginx@docker rule="Host(`haggebuddi.com`)" traefik_1 | time="2022-10-19T21:14:47Z" level=debug msg="Looking for provided certificate(s) to validate ["haggebuddi.com"]..." routerName=https-nginx@docker rule="Host(`haggebuddi.com`)" providerName=le.acme ACME CA="https://acme-v02.api.letsencrypt.org/directory" traefik_1 | time="2022-10-19T21:14:47Z" level=debug msg="No ACME certificate generation required for domains ["haggebuddi.com"]." routerName=https-nginx@docker rule="Host(`haggebuddi.com`)" providerName=le.acme ACME CA="https://acme-v02.api.letsencrypt.org/directory" traefik_1 | time="2022-10-19T21:14:52Z" level=debug msg="TLS Challenge CleanUp temp certificate for haggebuddi.com" providerName=tlsalpn.acme traefik_1 | time="2022-10-19T21:14:52Z" level=debug msg="Configuration received: {"http":{},"tcp":{},"udp":{},"tls":{}}" providerName=tlsalpn.acme traefik_1 | time="2022-10-19T21:14:52Z" level=debug msg="No entryPoint defined for this router, using the default one(s) instead: [http https]" routerName=nginx traefik_1 | time="2022-10-19T21:14:52Z" level=debug msg="No default certificate, fallback to the internal generated certificate" tlsStoreName=default traefik_1 | time="2022-10-19T21:14:52Z" level=debug msg="Added outgoing tracing middleware noop@internal" routerName=http-to-https@internal middlewareName=tracing middlewareType=TracingForwarder entryPointName=http traefik_1 | time="2022-10-19T21:14:52Z" level=debug msg="Creating middleware" middlewareType=RedirectScheme entryPointName=http routerName=http-to-https@internal middlewareName=redirect-http-to-https@internal traefik_1 | time="2022-10-19T21:14:52Z" level=debug msg="Setting up redirection to https 443" middlewareName=redirect-http-to-https@internal middlewareType=RedirectScheme entryPointName=http routerName=http-to-https@internal traefik_1 | time="2022-10-19T21:14:52Z" level=debug msg="Adding tracing to middleware" entryPointName=http routerName=http-to-https@internal middlewareName=redirect-http-to-https@internal traefik_1 | time="2022-10-19T21:14:52Z" level=debug msg="Creating middleware" entryPointName=http serviceName=nginx-nginx-demo middlewareName=pipelining middlewareType=Pipelining routerName=nginx@docker traefik_1 | time="2022-10-19T21:14:52Z" level=debug msg="Creating load-balancer" serviceName=nginx-nginx-demo routerName=nginx@docker entryPointName=http traefik_1 | time="2022-10-19T21:14:52Z" level=debug msg="Creating server 0 http://172.26.0.3:80" entryPointName=http serviceName=nginx-nginx-demo serverName=0 routerName=nginx@docker traefik_1 | time="2022-10-19T21:14:52Z" level=debug msg="child http://172.26.0.3:80 now UP" traefik_1 | time="2022-10-19T21:14:52Z" level=debug msg="Propagating new UP status" traefik_1 | time="2022-10-19T21:14:52Z" level=debug msg="Added outgoing tracing middleware nginx-nginx-demo" middlewareName=tracing middlewareType=TracingForwarder entryPointName=http routerName=nginx@docker traefik_1 | time="2022-10-19T21:14:52Z" level=debug msg="Creating middleware" entryPointName=http middlewareName=traefik-internal-recovery middlewareType=Recovery traefik_1 | time="2022-10-19T21:14:52Z" level=debug msg="Creating middleware" middlewareName=pipelining middlewareType=Pipelining routerName=https-nginx@docker serviceName=nginx-nginx-demo entryPointName=https traefik_1 | time="2022-10-19T21:14:52Z" level=debug msg="Creating load-balancer" routerName=https-nginx@docker serviceName=nginx-nginx-demo entryPointName=https traefik_1 | time="2022-10-19T21:14:52Z" level=debug msg="Creating server 0 http://172.26.0.3:80" serviceName=nginx-nginx-demo entryPointName=https routerName=https-nginx@docker serverName=0 traefik_1 | time="2022-10-19T21:14:52Z" level=debug msg="child http://172.26.0.3:80 now UP" traefik_1 | time="2022-10-19T21:14:52Z" level=debug msg="Propagating new UP status" traefik_1 | time="2022-10-19T21:14:52Z" level=debug msg="Added outgoing tracing middleware nginx-nginx-demo" middlewareName=tracing middlewareType=TracingForwarder entryPointName=https routerName=https-nginx@docker traefik_1 | time="2022-10-19T21:14:52Z" level=debug msg="Creating middleware" entryPointName=https middlewareName=traefik-internal-recovery middlewareType=Recovery traefik_1 | time="2022-10-19T21:14:52Z" level=debug msg="Adding route for haggebuddi.com with TLS options default" entryPointName=https traefik_1 | time="2022-10-19T21:14:52Z" level=debug msg="Trying to challenge certificate for domain [haggebuddi.com] found in HostSNI rule" ACME CA="https://acme-v02.api.letsencrypt.org/directory" routerName=https-nginx@docker rule="Host(`haggebuddi.com`)" providerName=le.acme traefik_1 | time="2022-10-19T21:14:52Z" level=debug msg="Looking for provided certificate(s) to validate ["haggebuddi.com"]..." providerName=le.acme ACME CA="https://acme-v02.api.letsencrypt.org/directory" routerName=https-nginx@docker rule="Host(`haggebuddi.com`)" traefik_1 | time="2022-10-19T21:14:52Z" level=debug msg="No ACME certificate generation required for domains ["haggebuddi.com"]." providerName=le.acme ACME CA="https://acme-v02.api.letsencrypt.org/directory" routerName=https-nginx@docker rule="Host(`haggebuddi.com`)" traefik_1 | time="2022-10-19T21:14:52Z" level=debug msg="legolog: [INFO] Deactivating auth: https://acme-v02.api.letsencrypt.org/acme/authz-v3/166451089416" traefik_1 | time="2022-10-19T21:14:52Z" level=error msg="Unable to obtain ACME certificate for domains "haggebuddi.com": unable to generate a certificate for the domains [haggebuddi.com]: error: one or more domains had a problem:\n[haggebuddi.com] acme: error: 400 :: urn:ietf:params:acme:error:tls :: 192.164.108.35: remote error: tls: internal error\n" providerName=le.acme ACME CA="https://acme-v02.api.letsencrypt.org/directory" routerName=https-nginx@docker rule="Host(`haggebuddi.com`)"
BuddiHaggeGeändert von DMW007 (20.10.2022 um 13:18 Uhr) Grund: Lesbarkeit verbessert/Code-Formatierung
-
20.10.2022, 13:48 #2
- Registriert seit
- 15.11.2011
- Beiträge
- 7.834
- Blog Entries
- 5
Thanked 9.358 Times in 3.198 PostsAW: Traefik 404 not found
Hi & Willkommen!
Let's Encrypt braucht funktionierendes DNS, den Fehler wird wohl Cloudflare als Mittelsmann verursachen. Wenn das Zertifikat nicht erstellt wird, dann ist die Verbindung von Cloudflare zu dir wohl unverschlüsselt oder zumindest wird das Zertifikat nicht validiert. Allerdings sieht es gar nicht danach aus, als ob da auch noch Cloudflare dazwischen ist. Zumindest zeigt die IP-Adresse auf Telekom Österreich, was zu "A1" beim Modem passt:
Code:$ host $(dig +short haggebuddi.com) 35.108.164.192.in-addr.arpa domain name pointer 192-164-108-35.hdsl.highway.telekom.at.
Code:$ curl -I http://haggebuddi.com HTTP/1.1 404 Not Found ...
Code:$ curl -I http://u-labs.de HTTP/1.1 308 Permanent Redirect Location: https://u-labs.de/
Das hat wenig mit einem schlechten Gerät zu tun. Dafür brauchst du einen Load Balancer, der den Datenverkehr auf die Server verteilt. Zu den Grundlagen habe ich hier schon mal einen Artikel gemacht. Ein LB ist in Routern üblicherweise nicht integriert, zumindest nicht in normalen Endverbraucher-Geräten. Könnte man mit freien Systemen wie OpenWRT auch den Router machen lassen. Dann braucht es allerdings ein unterstütztes Gerät, das zudem auch etwas Leistung besitzt, sodass man da zusätzlich einen LB drauf betreiben kann. Muss nicht die Welt sein, vor allem mit wenig Datenverkehr. Aber halt so viel Luft, dass der nicht mit seinen Kernaufgaben schon überlastet ist.
Hier sollte man sich dann auch Gedanken machen, wo die TLS-Terminierung erfolgen soll. Ist prinzipiell auf oder nach dem LB möglich. Auf zentralisiert es, dann muss der Layer 7 sein, braucht ein wenig mehr Leistung und das Protokoll (oder die Protokolle) beherrschen, dafür ist der Weg danach im Heimnetzwerk unverschlüsselt. Level 4 lässt es auf dem Docker-Server, der LB leitet die Pakete stumpf weiter und schaut nicht rein, d.H. die Transportverschlüsselung ist komplett Ende-zu-Ende Verschlüsselt bis zum Zielserver.
Falls Ausfallsicherheit auch gewünscht ist, die an der Stelle nicht vergessen. Wobei es das komplexer macht und es privat in den meisten Fällen überzogen sein dürfte, außer es geht mehr ums Lernen als um die produktive Nutzung.
Für die Fehlersuche ist es sogar sinnvoll, alles auf einem Server zu haben. Cluster machen so was deutlich komplizierter, da braucht es dann Konfiguration auf dem LB, um z.B. per Header auf einer bestimmten Maschine zu landen. Selbst so was kann allerdings auch eine Fehlerquelle sein.
-
20.10.2022, 14:30 #3
- Registriert seit
- 19.10.2022
- Beiträge
- 4
Thanked 1 Time in 1 PostAW: Traefik 404 not found
Hi, danke für die Antwort.
Also Cloudflare ist dazwischen, bei dem Test war dann aber Proxy deaktiviert, also direkt über meine IP.
Als ich das in AWS gestern probiert hab, ging das auch problemlos über Cloudflare, jedoch als Proxy aktiviert war, kam immer im Browser, dass es mehr als 20 Weiterleitungen gab, wohl irgendeine Loop. Als ich Proxy bei Cloudflare deaktiviert hab, ging es. Verbindung zu Traefik war dann per HTTPS, aber ein Certfehler kam, da nur das default Traefik Cert angezeigt wird, dem aber nicht vertraut wird.
Cloudflare hat bei mir glaub ich HTTP -> HTTPS redirect wenn ich mich nicht täusche.
Ich schick dann am Abend nach der Arbeit die Compose Datei.
Danke für die Erklärung unten, sobald mein neuer Glasfaseranschluss zuhause angeschlossen wird (hoffentlich bald) werd ich eh eine FortiGate dazwischenstellen.
-
20.10.2022, 17:43 #4
- Registriert seit
- 19.10.2022
- Beiträge
- 4
Thanked 1 Time in 1 PostAW: Traefik 404 not found
So, hier mal die Docker-Compose für Traefik:
Code:services: traefik: image: traefik:v2.9.1 restart: always command: # Experimentell, um das Dashboard ohne Zugriffsschutz aufzurufen #- "--api.insecure=true" - "--providers.docker" - "--providers.docker.exposedByDefault=false" - "--log.level=DEBUG" - "--providers.docker.network=traefik_web" - "--entrypoints.http.address=:80" - "--entrypoints.http.http.redirections.entrypoint.to=https" - "--entrypoints.http.http.redirections.entrypoint.scheme=https" - "--entrypoints.https.address=:443" # Vermeidet, dass wir den resolver in jedem container mit "traefik.http.routers.https.tls.certresolver=> - "--entrypoints.https.http.tls.certResolver=le" - "--certificatesresolvers.le.acme.tlschallenge=true" - "--certificatesresolvers.le.acme.email=markus3261@gmail.com" - "--certificatesresolvers.le.acme.storage=/letsencrypt/acme.json" ports: - "80:80" - "443:443" - "8888:8888" volumes: - /var/run/docker.sock:/var/run/docker.sock:ro - ./letsencrypt:/letsencrypt networks: - web networks: web: name: traefik_web
Code:services: nginx: image: nginx:1.20 labels: - "traefik.enable=true" - "traefik.http.routers.nginx.rule=Host(`haggebuddi.com`)" networks: - traefik_web networks: traefik_web: external: true
Geändert von BuddiHagge (20.10.2022 um 17:49 Uhr)
-
20.10.2022, 19:56 #5
- Registriert seit
- 15.11.2011
- Beiträge
- 7.834
- Blog Entries
- 5
Thanked 9.358 Times in 3.198 PostsAW: Traefik 404 not found
Deine docker-compose.yml sieht gut aus. Ich habe sie mal in einen CODE Block gepackt, das ist besser als die Formatierung über eine Schrift - durch die Schrift sah es aus, als wären an manchen Stellen Leerzeichen, wo keine hin gehören. Zweiter Vorteil vom Codeblock: BBCode wird nicht geparst - macht gerade Portangaben lesbarer, wenn die nicht durch einen Smiley ersetzt werden
Aber nachdem der Docker-Teil funktioniert, hast du im Grunde das Problem ja wohl schon selbst gefunden: Cloudflare. Was du da konkret einstellen musst, kann ich dir nicht sagen - die halte ich von meinen Projekten so weit wie es geht fern. Wenn du das davor betreiben und den Fehler eingrenzen willst, bleibt dir bei so proprietären Clouddiensten wohl nur eine Wahl: Reverse Engineering. Setze z.B. einen ganz einfachen Webserver direkt auf Port 80/443 (ohne Traefik davor) auf, der auf jedem Hostname lauscht, schalte für die Dauer des Tests (!) die Zertifikatsvalidierung ab und konfiguriere den Webserver so, dass er dir möglichst viele Infos ins AccessLog schreibt. Oder falls das nicht reicht, lege auf dem ein PHP-Skript (ggf. mit ReWrite Regel, die alles dort drauf leitet) an, dass alle Header ausgibt. Bei PHP reicht schon so was:
PHP-Code:<?php var_dump($_SERVER);
-
20.10.2022, 20:33 #6
- Registriert seit
- 19.10.2022
- Beiträge
- 4
Thanked 1 Time in 1 PostAW: Traefik 404 not found
Danke soweit mal für die Erklärungen.
Meine Frage nun, ich hab das ja gestern auch 1:1 so über Cloudflare und AWS getestet, das ging a problemlos sofern die Proxy Funktion abgeschaltet war.
Wenn Cloudflare da jetzt schuld ist, dürfte es ja über AWS auch nicht gehen?
Der einzige wirkliche Unterschied der mir einfällt, dass ich in der AWS nur eine Docker Node hatte und Zuhause jetzt 2 im Swarm Cluster, wird aber nur auf einer Node ausgerollt.
- - - Aktualisiert - - -
Update: hab gerade herumprobiert, eine andere Domain genommen, HTTPS redirect abgedreht, am Anfang nix gebracht.
Dann nochmal anstatt mit docker-compose zu deployen, im stack mode deployed, und aufeinmal, siehe da, NGINX taucht auf.
Jetzt muss ich nurnoch austesten was es genau war.
Hat aber nur das default Traefik Cert jetzt, sollte ja eigentlich von Let's Encrypt in der Config sein, oder?
Hab jetzt die mit code erstellten Stacks gelöscht und wegen der besseren Übersicht in Portainer angelegt, funktioniert aufeinmal nichtmehr NGINX zu erreichen.
Im Log von NGINX seh ich meinen Aufruf, aber wird komischerweise resetted anscheinend.
"time="2022-10-20T19:11:50Z" level=debug msg="http: TLS handshake error from 10.0.0.2:27156: read tcp 10.0.0.46:443->10.0.0.2:27156: read: connection reset by peer"
"
Ich glaub irgendwas stimmt intern noch nicht, bei mir im Netz bekomm ich am Laptop 404, wenn ich am Handy im Netz daheim bin bekomm ich auch 404 und wenn ich mit Mobile Daten bin, komm ich auf die SeiteGeändert von BuddiHagge (20.10.2022 um 21:37 Uhr)
-
The Following User Says Thank You to BuddiHagge For This Useful Post:
-
20.10.2022, 22:48 #7
- Registriert seit
- 15.11.2011
- Beiträge
- 7.834
- Blog Entries
- 5
Thanked 9.358 Times in 3.198 PostsAW: Traefik 404 not found
Ich denke, wir haben da wohl ein bisschen aneinander vorbei geredet, weil es ja zwischenzeitlich zwei Probleme gibt (bzw. gab):
1. Die bei dir gehosteten Instanzen
2. Die Cloudinstanzen (so wie ich das nun herauslese, nur zum Gegentesten)
Bei #2 führen Probleme mit der Weiterleitung durch Cloudflare zu einer Endlosschleife. #1 ist ein anderes Thema, wenn Cloudflare da wirklich nichts mehr macht, liegt die Ursache hier wohl woanders. Lässt sich gegentesten, in dem man statt des DNS-Names direkt die IP-Adresse nutzt. Mit curl kann der Schalter -H HTTP-Header senden, du kannst also den Host-Header auf deine Domain setzen. Ansonsten greift die vHost-Regel auf die Domain von Traefik nicht. Damit lassen sich verschiedene Fehlerquellen ausschließen, auch eine Anfrage direkt an den Container ist möglich, falls man ein Problem im Reverse Proxy (Traefik hier) vermutet. In deinem Falle kannst du damit versuchen einzugrenzen, ob und was an dieser Stelle innerhalb deines Netzes anders ist, als von außen.
Dass es unter Docker Swarm spezielle Eigenheiten gibt ist möglich, damit kenne ich mich wenig aus. Für Cluster setze ich auf Kubernetes. Laut Traefik Dokumentation ist der Docker-Provider grundsätzlich auch für Swarm geeignet, allerdings werden hier ein paar Besonderheiten erwähnt, eventuell hilft dir das weiter. Teils nur für bestimmte Versionen relevant, die ehemalige V3 Spezifikation hatte ja hauptsächlich Änderungen für Swarm und war für das normale Compose ohne Swarm kaum relevant (teils sogar von Nachteil, da bestimmte Dinge wie z.B. Ressourcenlimits weggefallen sind).
Laut Konfiguration ja (zumindest beim direkten Zugriff). Da musst du nun schauen, warum die ACME LE-Integration kein Zertifikat generieren kann. Liegt vermutlich entweder an der fehlenden Erreichbarkeit von außen (LE validiert die Domain, bevor Zertifikate ausgestellt werden). Bedenke, dass gerade wenn du DNS-Änderungen durchführst (z.B. per Cloudflare, aber natürlich auch durch z.B. Re-Connects, falls du da einen neue IP bekommst), die Zeitversetzt repliziert werden. Es kann also sein, dass LE beim Prüfen noch ältere Einträge im Cache hat (bzw. aus dem Cache eines anderen DNS-Servers bekommt) und daher die Validierung nicht funktioniert. Meistens siehst du näheres dazu im Log. Das kann übrigens auch die Ursache sein, warum das bei dir nur extern per Internet geht. Je nachdem was da für DNS-Server genutzt werden, ist der eine möglicherweise schneller als der andere. Abhängig von der Netzstruktur kommen evtl. noch lokale Caches wie z.B. ein PiHole dazu, der für zusätzliches Caching im Heimnetz sorgen kann.
Mit LE generell am besten nicht zu viel am DNS drehen. Wenn es sich nicht vermeiden lässt, kann es sinnvoll sein, nach Änderungen zumindest ein paar Stunden (oder noch besser bis zum nächsten Tag) zu warten und so lange die Domain aus Traefik raus zunehmen. Sonst versucht der im Hintergrund zig mal erfolglos ein Zertifikat zu bekommen. Damit stößt man unter Umständen gegen Limits vom LE und ist dann erst mal eine Zeit lang komplett von der Zertifikatsvergabe gesperrt. Spätestens dann kommt man um eine Zwangspause nicht herum, das wird aber für gewöhnlich in den Logs vermerkt. Die meisten Limits sind zwar mittlerweile recht Großzügig und sollten selten ein Problem sein. Jedoch gerade bei der Validierung sind es nur 5 fehlerhafte Versuche pro Konto, Hostname und Stunde - das kann beim ausprobieren schnell erreicht sein.
Ähnliche Themen
-
Einstieg in Traefik: Installation und Einrichtung eines Reverse Proxys mit Docker Integration auf Raspberry Pi und X86 Servern
Von DMW007 im Forum LinuxAntworten: 20Letzter Beitrag: 11.05.2024, 13:19 -
CentOS: GLIBC not found - Teamspeak3 Musikbot
Von Devon im Forum Server-AdministrationAntworten: 1Letzter Beitrag: 15.04.2014, 14:44 -
bash: lsb_release: command not found
Von TomatenKetchup im Forum Server-AdministrationAntworten: 2Letzter Beitrag: 24.12.2013, 19:27 -
Aktuelle Fehlermeldungen bei Knuddels-Seiten 404 - Not Found
Von Scanner im Forum Knuddels AllgemeinAntworten: 3Letzter Beitrag: 24.05.2011, 23:00
Stichworte
Diese Seite nutzt Cookies, um das Nutzererlebnis zu verbessern. Klicken Sie hier, um das Cookie-Tracking zu deaktivieren.