我的VPS上部署了traefik来做前端的反向代理服务, 用于访问我的各种服务网站,比如博客、服务器状态、Grafana],这些服务我都是通过cloudflare的域名解析访问的,同时配置了ssl加密。这两个域名一直都没有问题,我只需要写好docker-compose.yaml文件,然后docker-compose up -d 就可以访问到对应的服务了, 但是我另外一个域名我配置了很多次的docker-compose.yaml文件, 总是提示404。
由于一直怀疑是traefik和docker配置文件的问题, 所以一直无法解决。
昨天突然想到,我换一个域名试一下看看,直接用 idatapod.com 的域名,发现traefike和docker配置文件都没问题, 访问正常。
我才意思到问题可能在cloudflare的配置上, 所以我查看了cloudflare的ssl加密模式, 发现我在SSL/TLS配置页面的差异了。
Cloudflare的SSL/TLS加密模式分为一下几种模式:
严格(仅 SSL 源服务器拉取)
在 Cloudflare 与您的源服务器之间强制进行加密。使用此模式可以确保与您的源服务器的连接始终是加密的,不考虑您的访问者的请求。
完全(严格)
启用端到端加密,对源服务器证书强制执行验证。使用 Cloudflare 的源服务器 CA 为您的源服务器生成证书。
完全
启用加密端到端。当您的源服务器支持 SSL 认证但未使用有效的公开可信的证书时,使用此模式。
灵活
仅在访问者与 Cloudflare 之间启用加密。这可以避免浏览器发出安全警告,但 Cloudflare 与您的源服务器之间的所有连接均通过 HTTP 建立。
关闭(不安全)
未应用加密。关闭 SSL 将禁用 HTTPS,浏览器同时会显示警告,指出您的网站不安全。
我之前设置的"完全(严格)“模式, 而其他两个能正常访问的域名,我配置的是“灵活“模式。
于是我把域名的ssl加密模式改为“灵活”, 网站终于可以正常访问了。
灵活模式,使得我的VPS上面的traefik不需要配置ssl证书, 只需要配置域名即可。cloudflare服务器是通过http的方式来请求到源服务器的,这种模式有一定的安全性问题,但是对于我这种类型的网站应用也足够简单实用了。