Traefik 配置未使用 AT&T 连接到手机
Traefik configuration not connecting to phones using AT&T
我最近开始使用 Traefik 为 ssl 和反向代理部署我的网站。一切似乎都很顺利,除了 phones 专门使用 AT&T 数据计划似乎无法成功连接到我的网站。当他们无法连接时,我没有收到任何错误消息,并且任何其他互联网服务提供商都没有已知的问题,无论是数据还是 wifi。我什至不知道从哪里开始处理这样的问题。我绝不是网络大师, google 具有类似问题的搜索结果是不存在的。
下面贴出我的 Traefik 相关配置文件,希望它们能为我的配置错误提供一个有用的 window。
任何帮助深表感谢。谢谢。
docker-compose.yml
traefik:
build:
context: .
dockerfile: ./compose/production/traefik/Dockerfile
image: app_production_traefik
depends_on:
- django
volumes:
- production_traefik:/etc/traefik/acme:z
ports:
- "0.0.0.0:80:80"
- "0.0.0.0:443:443"
docker文件
FROM traefik:v2.2.11
# I have tried with the updated version and got the same result
RUN mkdir -p /etc/traefik/acme \
&& touch /etc/traefik/acme/acme.json \
&& chmod 600 /etc/traefik/acme/acme.json
COPY ./compose/production/traefik/traefik.yml /etc/traefik
traefik.yml
log:
level: INFO
entryPoints:
web:
# http
address: ":80"
web-secure:
# https
address: ":443"
certificatesResolvers:
letsencrypt:
# https://docs.traefik.io/master/https/acme/#lets-encrypt
acme:
email: "me@email.com"
storage: /etc/traefik/acme/acme.json
# https://docs.traefik.io/master/https/acme/#httpchallenge
httpChallenge:
entryPoint: web
http:
routers:
web-router:
rule: "Host(`mysite.com`) || Host(`www.mysite.com`)"
entryPoints:
- web
middlewares:
- redirect
- csrf
service: django
web-secure-router:
rule: "Host(`mysite.com`) || Host(`www.mysite.com`)"
entryPoints:
- web-secure
middlewares:
- csrf
service: django
tls:
# https://docs.traefik.io/master/routing/routers/#certresolver
certResolver: letsencrypt
middlewares:
redirect:
# https://docs.traefik.io/master/middlewares/redirectscheme/
redirectScheme:
scheme: https
permanent: true
csrf:
# https://docs.traefik.io/master/middlewares/headers/#hostsproxyheaders
# https://docs.djangoproject.com/en/dev/ref/csrf/#ajax
headers:
hostsProxyHeaders: ["X-CSRFToken"]
services:
django:
loadBalancer:
servers:
- url: http://django:5000
providers:
# https://docs.traefik.io/master/providers/file/
file:
filename: /etc/traefik/traefik.yml
watch: true
更新
我按如下所示配置日志 - 每次用户成功访问该站点时我都会收到日志更新,但是当我再次尝试使用 AT&T phone 时,它没有记录任何内容并且 phone 没有成功连接到站点。在 Chrome 上,我只看到一条消息,内容为“无法访问此站点,example.com 意外关闭了连接。”
第一步是使用以下配置将 Traefik 置于调试模式
log:
level: DEBUG
accessLog: {}
有关 accessLog 的更多信息,请访问:
https://doc.traefik.io/traefik/observability/access-logs/
这应该会向您显示 entryPoints
中的所有请求,您可以在原始问题中分享更多信息。
几周后终于解决了。花费的时间比我想象的要长很多,但它已经解决了!
Docker 默认情况下没有 IPv6 功能。但是,默认情况下,Linode 在将您的域转移给它们时会在 AAAA 配置中添加 IPv6 地址。由于 IPv6 是由 DNS 配置通告的,AT&T 似乎默认与它联系,然后在失败时不搜索 IPv4。有趣的是,他们是唯一这样做的服务提供商。 None 少,我删除了我的 DNS 配置中的 AAAA 配置,并在更改生效后修复它(大约 27 小时。)
从好的方面来说,我至少在整个过程中改进了我的 Traefik 配置哈哈
我最近开始使用 Traefik 为 ssl 和反向代理部署我的网站。一切似乎都很顺利,除了 phones 专门使用 AT&T 数据计划似乎无法成功连接到我的网站。当他们无法连接时,我没有收到任何错误消息,并且任何其他互联网服务提供商都没有已知的问题,无论是数据还是 wifi。我什至不知道从哪里开始处理这样的问题。我绝不是网络大师, google 具有类似问题的搜索结果是不存在的。 下面贴出我的 Traefik 相关配置文件,希望它们能为我的配置错误提供一个有用的 window。 任何帮助深表感谢。谢谢。
docker-compose.yml
traefik:
build:
context: .
dockerfile: ./compose/production/traefik/Dockerfile
image: app_production_traefik
depends_on:
- django
volumes:
- production_traefik:/etc/traefik/acme:z
ports:
- "0.0.0.0:80:80"
- "0.0.0.0:443:443"
docker文件
FROM traefik:v2.2.11
# I have tried with the updated version and got the same result
RUN mkdir -p /etc/traefik/acme \
&& touch /etc/traefik/acme/acme.json \
&& chmod 600 /etc/traefik/acme/acme.json
COPY ./compose/production/traefik/traefik.yml /etc/traefik
traefik.yml
log:
level: INFO
entryPoints:
web:
# http
address: ":80"
web-secure:
# https
address: ":443"
certificatesResolvers:
letsencrypt:
# https://docs.traefik.io/master/https/acme/#lets-encrypt
acme:
email: "me@email.com"
storage: /etc/traefik/acme/acme.json
# https://docs.traefik.io/master/https/acme/#httpchallenge
httpChallenge:
entryPoint: web
http:
routers:
web-router:
rule: "Host(`mysite.com`) || Host(`www.mysite.com`)"
entryPoints:
- web
middlewares:
- redirect
- csrf
service: django
web-secure-router:
rule: "Host(`mysite.com`) || Host(`www.mysite.com`)"
entryPoints:
- web-secure
middlewares:
- csrf
service: django
tls:
# https://docs.traefik.io/master/routing/routers/#certresolver
certResolver: letsencrypt
middlewares:
redirect:
# https://docs.traefik.io/master/middlewares/redirectscheme/
redirectScheme:
scheme: https
permanent: true
csrf:
# https://docs.traefik.io/master/middlewares/headers/#hostsproxyheaders
# https://docs.djangoproject.com/en/dev/ref/csrf/#ajax
headers:
hostsProxyHeaders: ["X-CSRFToken"]
services:
django:
loadBalancer:
servers:
- url: http://django:5000
providers:
# https://docs.traefik.io/master/providers/file/
file:
filename: /etc/traefik/traefik.yml
watch: true
更新
我按如下所示配置日志 - 每次用户成功访问该站点时我都会收到日志更新,但是当我再次尝试使用 AT&T phone 时,它没有记录任何内容并且 phone 没有成功连接到站点。在 Chrome 上,我只看到一条消息,内容为“无法访问此站点,example.com 意外关闭了连接。”
第一步是使用以下配置将 Traefik 置于调试模式
log:
level: DEBUG
accessLog: {}
有关 accessLog 的更多信息,请访问: https://doc.traefik.io/traefik/observability/access-logs/
这应该会向您显示 entryPoints
中的所有请求,您可以在原始问题中分享更多信息。
几周后终于解决了。花费的时间比我想象的要长很多,但它已经解决了!
Docker 默认情况下没有 IPv6 功能。但是,默认情况下,Linode 在将您的域转移给它们时会在 AAAA 配置中添加 IPv6 地址。由于 IPv6 是由 DNS 配置通告的,AT&T 似乎默认与它联系,然后在失败时不搜索 IPv4。有趣的是,他们是唯一这样做的服务提供商。 None 少,我删除了我的 DNS 配置中的 AAAA 配置,并在更改生效后修复它(大约 27 小时。)
从好的方面来说,我至少在整个过程中改进了我的 Traefik 配置哈哈