Skip to content

Cannot use the same Host rule on multiple entrypoints #2339

@glitchcrab

Description

@glitchcrab

What did you do?

I have Traefik in front of the web UI on https://nvr.domain.com:443 for Unifi video and this works fine until I view a camera stream (which requires port 7446 to be open).

What did you expect to see?

I added a new entrypoint/frontend/backend to forward https://nvr.domain.com:7446 to the CCTV server. This should then proxy the stream over that port correctly.

What did you see instead?

Traefik fails to start.

Output of traefik version:

Version:      v1.4.1
Codename:     roquefort
Go version:   go1.9.1
Built:        2017-10-24_05:25:27PM
OS/Arch:      linux/arm

What is your environment & configuration (arguments, toml, provider, platform, ...)?

Details
{
 "GraceTimeOut": 10000000000,
 "Debug": false,
 "CheckNewVersion": true,
 "AccessLogsFile": "",
 "AccessLog": null,
 "TraefikLogsFile": "",
 "LogLevel": "INFO",
 "EntryPoints": {
  "http": {
   "Network": "",
   "Address": ":80",
   "TLS": null,
   "Redirect": {
    "EntryPoint": "https",
    "Regex": "",
    "Replacement": ""
   },
   "Auth": null,
   "WhitelistSourceRange": null,
   "Compress": false,
   "ProxyProtocol": null,
   "ForwardedHeaders": null
  },
  "https": {
   "Network": "",
   "Address": ":443",
   "TLS": {
    "MinVersion": "",
    "CipherSuites": null,
    "Certificates": null,
    "ClientCAFiles": null
   },
   "Redirect": null,
   "Auth": null,
   "WhitelistSourceRange": null,
   "Compress": false,
   "ProxyProtocol": null,
   "ForwardedHeaders": null
  },
  "nvrstream": {
   "Network": "",
   "Address": ":7446",
   "TLS": {
    "MinVersion": "",
    "CipherSuites": null,
    "Certificates": null,
    "ClientCAFiles": null
   },
   "Redirect": null,
   "Auth": null,
   "WhitelistSourceRange": null,
   "Compress": false,
   "ProxyProtocol": null,
   "ForwardedHeaders": null
  }
 },
 "Cluster": null,
 "Constraints": [],
 "ACME": {
  "Email": "xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx",
  "Domains": [
   {
    "Main": "xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx",
    "SANs": null
   },
   {
    "Main": "xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx",
    "SANs": null
   },
   {
    "Main": "xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx",
    "SANs": null
   },
   {
    "Main": "xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx",
    "SANs": null
   }
  ],
  "Storage": "acme.json",
  "StorageFile": "",
  "OnDemand": false,
  "OnHostRule": false,
  "CAServer": "",
  "EntryPoint": "https",
  "DNSProvider": "",
  "DelayDontCheckDNS": 0,
  "ACMELogging": true,
  "TLSConfig": null
 },
 "DefaultEntryPoints": [
  "http",
  "https"
 ],
 "ProvidersThrottleDuration": 2000000000,
 "MaxIdleConnsPerHost": 200,
 "IdleTimeout": 180000000000,
 "InsecureSkipVerify": false,
 "RootCAs": null,
 "Retry": null,
 "HealthCheck": {
  "Interval": 30000000000
 },
 "RespondingTimeouts": null,
 "ForwardingTimeouts": null,
 "Docker": null,
 "File": {
  "Watch": true,
  "Filename": "",
  "Constraints": null,
  "Trace": false,
  "DebugLogGeneratedTemplate": false,
  "Directory": ""
 },
 "Web": {
  "Address": ":8080",
  "CertFile": "",
  "KeyFile": "",
  "ReadOnly": false,
  "Statistics": null,
  "Metrics": null,
  "Path": "",
  "Auth": null,
  "Debug": false,
  "CurrentConfigurations": null,
  "Stats": null,
  "StatsRecorder": null
 },
 "Marathon": null,
 "Consul": null,
 "ConsulCatalog": null,
 "Etcd": null,
 "Zookeeper": null,
 "Boltdb": null,
 "Kubernetes": null,
 "Mesos": null,
 "Eureka": null,
 "ECS": null,
 "Rancher": null,
 "DynamoDB": null,
 "ConfigFile": "//traefik.toml"
}

traefik.toml

graceTimeOut = "10s"
debug = false
checkNewVersion = true
logLevel = "INFO"
ProvidersThrottleDuration = "2s"
IdleTimeout = "180s"
MaxIdleConnsPerHost = 200
InsecureSkipVerify = false
defaultEntryPoints = ["http", "https"]

[web]
address = ":8080"

[acme]
email = "user@domain.com"
storage = "acme.json"
entryPoint = "https"

[[acme.domains]]
   main = "nvr.domain.com"

[entryPoints]
  [entryPoints.http]
  address = ":80"
    [entryPoints.http.redirect]
      entryPoint = "https"
  [entryPoints.https]
  address = ":443"
    [entryPoints.https.tls]
  [entryPoints.nvrstream]
  address = ":7446"
    [entryPoints.nvrstream.tls]

[file]
watch = true

[backends]
  [backends.nvr]
    [backends.nvr.servers.server1]
    url = "http://10.101.0.50:7080"
  [backends.nvrstream]
    [backends.nvrstream.servers.server1]
    url = "http://10.101.0.50:7446"

[frontends]
  [frontends.nvr]
  backend = "nvr"
  passHostHeader = true
    [frontends.nvr.routes.route1]
    rule = "Host:nvr.domain.com"
  [frontends.nvrstream]
  backend = "nvrstream"
  passHostHeader = true
  entrypoints = ["nvrstream"]  
  [frontends.nvrstream.routes.route1]
    rule = "Host:nvr.domain.com"

Debug log

docker run -it --rm -v /opt/docker/traefik/traefik.toml:/traefik.toml -v /opt/docker/traefik/acme.json:/acme.json traefik --debug
INFO[0000] Using TOML configuration file //traefik.toml 
INFO[2017-10-27T14:42:54Z] Traefik version v1.4.1 built on 2017-10-24_05:25:27PM 
DEBU[2017-10-27T14:42:54Z] Global configuration loaded {"GraceTimeOut":10000000000,"Debug":true,"CheckNewVersion":true,"AccessLogsFile":"","AccessLog":null,"TraefikLogsFile":"","LogLevel":"DEBUG","EntryPoints":{"http":{"Network":"","Address":":80","TLS":null,"Redirect":{"EntryPoint":"https","Regex":"","Replacement":""},"Auth":null,"WhitelistSourceRange":null,"Compress":false,"ProxyProtocol":null,"ForwardedHeaders":{"Insecure":true,"TrustedIPs":null}},"https":{"Network":"","Address":":443","TLS":{"MinVersion":"","CipherSuites":null,"Certificates":null,"ClientCAFiles":null},"Redirect":null,"Auth":null,"WhitelistSourceRange":null,"Compress":false,"ProxyProtocol":null,"ForwardedHeaders":{"Insecure":true,"TrustedIPs":null}},"nvrstream":{"Network":"","Address":":7446","TLS":{"MinVersion":"","CipherSuites":null,"Certificates":null,"ClientCAFiles":null},"Redirect":null,"Auth":null,"WhitelistSourceRange":null,"Compress":false,"ProxyProtocol":null,"ForwardedHeaders":{"Insecure":true,"TrustedIPs":null}}},"Cluster":null,"Constraints":[],"ACME":{"Email":"user@domain.com","Domains":[{"Main":"nvr.domain.com","SANs":null}],"Storage":"acme.json","StorageFile":"","OnDemand":false,"OnHostRule":false,"CAServer":"","EntryPoint":"https","DNSProvider":"","DelayDontCheckDNS":0,"ACMELogging":false,"TLSConfig":null},"DefaultEntryPoints":["http","https"],"ProvidersThrottleDuration":2000000000,"MaxIdleConnsPerHost":200,"IdleTimeout":180000000000,"InsecureSkipVerify":false,"RootCAs":null,"Retry":null,"HealthCheck":{"Interval":30000000000},"RespondingTimeouts":null,"ForwardingTimeouts":null,"Docker":null,"File":{"Watch":true,"Filename":"//traefik.toml","Constraints":null,"Trace":false,"DebugLogGeneratedTemplate":false,"Directory":""},"Web":{"Address":":8080","CertFile":"","KeyFile":"","ReadOnly":false,"Statistics":null,"Metrics":null,"Path":"/","Auth":null,"Debug":false,"CurrentConfigurations":null,"Stats":null,"StatsRecorder":null},"Marathon":null,"Consul":null,"ConsulCatalog":null,"Etcd":null,"Zookeeper":null,"Boltdb":null,"Kubernetes":null,"Mesos":null,"Eureka":null,"ECS":null,"Rancher":null,"DynamoDB":null} 
WARN[2017-10-27T14:42:54Z] top-level idle timeout configuration has been deprecated -- please use responding timeouts 
INFO[2017-10-27T14:42:54Z] Preparing server http &{Network: Address::80 TLS:<nil> Redirect:0x136fd740 Auth:<nil> WhitelistSourceRange:[] Compress:false ProxyProtocol:<nil> ForwardedHeaders:0x135cd940} with readTimeout=0s writeTimeout=0s idleTimeout=3m0s 
WARN[2017-10-27T14:42:54Z] top-level idle timeout configuration has been deprecated -- please use responding timeouts 
INFO[2017-10-27T14:42:54Z] Preparing server https &{Network: Address::443 TLS:0x133d7590 Redirect:<nil> Auth:<nil> WhitelistSourceRange:[] Compress:false ProxyProtocol:<nil> ForwardedHeaders:0x135cd950} with readTimeout=0s writeTimeout=0s idleTimeout=3m0s 
INFO[2017-10-27T14:42:54Z] Starting server on :80                       
INFO[2017-10-27T14:43:07Z] Loading ACME Account...                      
INFO[2017-10-27T14:43:07Z] Loaded ACME config from store acme.json      
DEBU[2017-10-27T14:43:07Z] Building ACME client...                      
DEBU[2017-10-27T14:43:08Z] AgreeToTOS...                                
INFO[2017-10-27T14:43:09Z] Retrieving ACME certificates...              
INFO[2017-10-27T14:43:09Z] Retrieved ACME certificates                  
DEBU[2017-10-27T14:43:09Z] Testing certificate renew...                 
WARN[2017-10-27T14:43:09Z] top-level idle timeout configuration has been deprecated -- please use responding timeouts 
INFO[2017-10-27T14:43:09Z] Preparing server nvrstream &{Network: Address::7446 TLS:0x133d7530 Redirect:<nil> Auth:<nil> WhitelistSourceRange:[] Compress:false ProxyProtocol:<nil> ForwardedHeaders:0x135cd960} with readTimeout=0s writeTimeout=0s idleTimeout=3m0s 
INFO[2017-10-27T14:43:09Z] Starting server on :443                      
ERRO[2017-10-27T14:43:09Z] Error creating TLS config: No certificates found for TLS entrypoint nvrstream 
FATA[2017-10-27T14:43:09Z] Error preparing server: No certificates found for TLS entrypoint nvrstream

Metadata

Metadata

Assignees

No one assigned

    Type

    No type

    Projects

    No projects

    Milestone

    No milestone

    Relationships

    None yet

    Development

    No branches or pull requests

    Issue actions