在Rancher平台通过Traefik为WordPress配置Let's Encrypt免费SSL
在Rancher中通过Traefik为WordPress配置Let's Encrypt SSL证书
我来帮你梳理下在Rancher环境里用Traefik给WordPress配置Let's Encrypt SSL的正确步骤——你之前的尝试方向是对的,大概率是某些细节没踩对,咱们一步步来排查和配置:
一、先搞定Traefik的基础挂载权限
你之前挂载了/mnt/docker/traefik/acme:/etc/letsencrypt/acme,这个路径的权限很容易出问题。Traefik容器需要能读写这个目录才能生成证书文件,先在宿主机执行这几条命令确保权限正确:
mkdir -p /mnt/docker/traefik/acme chmod 755 /mnt/docker/traefik/acme # 注意:不同Traefik版本的运行用户可能不同,若用root运行可跳过chown,否则换成容器对应的UID/GID chown 1000:1000 /mnt/docker/traefik/acme
二、配置Traefik的ACME核心参数
不管你是用traefik.yml配置文件还是Rancher Stack的环境变量,这几个关键配置必须到位:
- 启用HTTP-01挑战:Let's Encrypt需要通过80端口验证域名归属,所以要开放80端口作为入口
- 有效邮箱:必须填能正常接收邮件的地址,Let's Encrypt会用它通知证书到期
- 指定证书存储路径:对应你挂载的目录,要明确指向
acme.json文件
给你一个traefik.yml的核心配置片段参考:
entryPoints: web: address: ":80" # 可选:自动把HTTP请求重定向到HTTPS http: redirections: entryPoint: to: websecure scheme: https websecure: address: ":443" certificatesResolvers: letsencrypt: acme: email: your-real-email@example.com storage: /etc/letsencrypt/acme/acme.json httpChallenge: entryPoint: web # 指定用80端口的web入口做挑战验证
三、给WordPress容器加Traefik路由标签
在Rancher的WordPress Stack里,找到容器的「Labels」配置项,添加以下标签让Traefik识别并自动申请证书:
traefik.enable=true:告诉Traefik要代理这个WordPress服务traefik.http.routers.wordpress.rule=Host(your-domain.com):替换成你的实际域名,必须确保域名已经解析到集群的公网IPtraefik.http.routers.wordpress.tls.certresolver=letsencrypt:指定用咱们刚才配置的证书解析器traefik.http.routers.wordpress.entrypoints=websecure:用HTTPS的443端口入口traefik.http.services.wordpress.loadbalancer.server.port=80:指向WordPress容器内部的80端口
四、排查你之前失败的常见原因
- 域名解析问题:先确认你的域名能正常解析到Traefik所在集群的公网IP,可以用
curl http://your-domain.com/.well-known/acme-challenge/test测试(测试后记得删除临时文件) - 端口开放问题:集群的80和443端口必须在防火墙/安全组里开放,不然Let's Encrypt的挑战请求进不来
- acme.json权限问题:如果之前生成过这个文件,它的权限必须是600,Traefik无法写入权限不对的文件。可以先删除旧文件再重建:
rm /mnt/docker/traefik/acme/acme.json touch /mnt/docker/traefik/acme/acme.json chmod 600 /mnt/docker/traefik/acme/acme.json
- Traefik版本问题:确保用的是Traefik v2.x及以上版本,旧版本的ACME配置语法完全不同,很容易导致配置失效
五、验证配置是否生效
重启Traefik和WordPress服务后,查看Traefik的日志:
docker logs [你的Traefik容器名称]
如果看到类似Obtained certificate for domain your-domain.com的日志,说明证书申请成功。此时访问https://your-domain.com就能看到带SSL锁的WordPress站点了。
内容的提问来源于stack exchange,提问作者Mervyn Lee
相关产品推荐
相关产品推荐

