HTTPS-Redirect和AWS负载均衡器背后的Traefik

我正在尝试将所有传入的Traefik从http重定向到https,用于Web应用程序,该应用程序从具有自定义端口的docker容器中获取。

如果我构建了这个docker

compose文件,并扩展了应用程序,一切将按预期工作。我可以请求应用程序的http和https,但是我尝试实现仅提供https并将http重定向到https的目的。

由于我使用的是Docker-Compose文件,因此我没有Traefik.toml,并尝试在没有一个文件的情况下完成此任务。

traefik:

image: traefik:latest

command:

- "--api"

- "--docker"

- "--docker.domain=example.com"

- "--logLevel=DEBUG"

- "--docker.watch"

labels:

- "traefik.enable=true"

ports:

- "80:80"

- "8080:8080"

- "443:443"

volumes:

- /var/run/docker.sock:/var/run/docker.sock

- /dev/null:/traefik.toml

application:

image: application

command: web

tty: false

stdin_open: true

restart: always

expose:

- "8081"

labels:

- "traefik.backend=application"

- "traefik.frontend.rule=HostRegexp:{subdomain:[a-z]+}.example.com"

- "traefik.frontend.priority=1"

- "traefik.enable=true"

volumes:

- /var/run/docker.sock:/var/run/docker.sock

我尝试对应用程序容器进行不同的更改,例如:

- "traefik.frontend.entryPoints=http,https"

- "traefik.frontend.redirect.entryPoint=https"

- "traefik.frontend.headers.SSLRedirect=true"

但是我能完成的最大任务是使用SSLRedirect标签进行多次重定向响应,并且没有从traefik获得以下内容,并且http或https请求都无法正确转发。

 level=error msg="Recovered from panic in http handler: runtime error: invalid memory address or nil pointer dereference"

谁能将我推向正确的方向?

提前致谢 ;)

 user:~$ docker --version

Docker version 1.13.1, build 092cba3

user:~$ docker-compose --version

docker-compose version 1.8.0

IMAGE           COMMAND                 ... PORTS                                                              NAMES

application "dotnet Web..." ... 8081/tcp components_application_1

traefik:latest "/traefik --api --..." ... 0.0.0.0:80->80/tcp, 0.0.0.0:443->443/tcp, 0.0.0.0:8080->8080/tcp components_traefik_1

 aws-elb => vpc => ec2...ecn 

traefik per instance,

n applications per instance

回答:

经过更深入的研究,我自己找到了解决方案。

问题是我添加后,应用程序容器上缺少标签

- "traefik.frontend.headers.SSLProxyHeaders=X-Forwarded-Proto: https"

- "traefik.frontend.headers.SSLRedirect=true"

在我的应用程序容器上,它具有明确的301重定向的魅力。

为什么在默认情况下aws-

elb需要标头,所以会接受一个https请求,并通过HTTP(80)将其转发到连接的实例,在此过程中,elb将X-Forwarded-Proto:

https标头添加到请求。

由于traefik不知道它在肘部后面运行,因此它会一遍又一遍地进行重定向。但是页眉停止了此行为。

以上是 HTTPS-Redirect和AWS负载均衡器背后的Traefik 的全部内容, 来源链接: utcz.com/qa/412092.html

回到顶部