允许在Docker上使用Traefik使用http和https



我在我的VPS中使用Traefik来路由流量到我的网站,经过几个小时的折腾,我终于设法让它与使用Le's加密的https一起工作。

现在,我需要做的一件事是能够通过普通http访问我的网站,因为这是一个旧浏览器的爱好项目,我添加tls的唯一原因是Firefox不喜欢我的网站没有它。

问题是,与我目前的配置,我可以通过https正常访问我的网站,但当我尝试它与普通http我得到一个404错误。

下面是我在docker-compose上的配置:

version: "3"
services:
traefik:
image: "traefik:v2.5"
container_name: "traefik"
command:
#- "--log.level=DEBUG"
- "--api.insecure=true"
- "--providers.docker=true"
- "--providers.docker.exposedbydefault=false"
- "--entrypoints.web.address=:80"
- "--entrypoints.websecure.address=:443"
- "--certificatesresolvers.teeresolver.acme.tlschallenge=true"
- "--certificatesresolvers.teeresolver.acme.email=me@gmail.com"
- "--certificatesresolvers.teeresolver.acme.storage=/letsencrypt/acme.json"
ports:
- "443:443"
- "80:80"
- "8080:8080"
volumes:
- "./letsencrypt:/letsencrypt"
- "/var/run/docker.sock:/var/run/docker.sock:ro"
networks:
- mywebsite
# [...]
mywebsite:
image: my-web-site/site
build:
context: ~/mywebsite-runner/_work/my-web-site-php/my-web-site-php
dockerfile: Dockerfile
volumes:
- ./tee-downloads:/var/www/build/downloads
- ./tee-contents:/var/www/build/contents
ports:
- "0.0.0.0:8001:80"
labels:
- "traefik.enable=true"
- "traefik.http.routers.themywebsite.rule=Host(`mywebsite.com`, `www.mywebsite.com`)"
- "traefik.http.routers.themywebsite.entrypoints=websecure,web"
- "traefik.http.routers.themywebsite.tls.certresolver=teeresolver"
networks:
- mywebsite
networks:
mywebsite:

我一直在寻找一个解决方案几个小时,但我唯一能在谷歌上找到的是配置重定向httphttps,这是我不能做的。

有人知道怎么做吗?

提前感谢您的帮助。

在traefik中,每个router根据规则和入口点定义了一组要应用的策略。

如果你想要两个策略,一个用于http,一个用于https,你需要定义2个traefikrouters:

mywebsite:
...
labels:
- "traefik.enable=true"
- "traefik.http.routers.themywebsite.entrypoints=websecure"
- "traefik.http.routers.themywebsite.tls.certresolver=teeresolver"
- "traefik.http.routers.themywebsite.rule=Host(`mywebsite.com`, `www.mywebsite.com`)"
- "traefik.http.routers.httpwebsite.entrypoints=web"
- "traefik.http.routers.httpwebsite.rule=Host(`mywebsite.com`, `www.mywebsite.com`)"
  • 一个叫做themywebsite
  • 另一个叫做httpwebsite

因此,您不使用httpwebsite路由器的certresolver。

相关内容

  • 没有找到相关文章

最新更新