You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

Windows服务器下Docker部署Nginx并配置HTTPS的问题求助

排查与解决步骤

1. 修正Nginx证书路径错误

你的Nginx配置里,证书路径写的是/etc/letsencrypt/live/jethrothelion.com/...,但Certbot命令申请的是mydomain.com和www.mydomain.com,路径不匹配会导致Nginx无法加载SSL证书,HTTPS服务启动失败,只能走HTTP。

修改Nginx配置中的证书路径:

ssl_certificate /etc/letsencrypt/live/mydomain.com/fullchain.pem;
ssl_certificate_key /etc/letsencrypt/live/mydomain.com/privkey.pem;

2. 确认Certbot证书生成成功

手动执行Certbot命令,检查证书是否正常生成:

docker-compose run --rm certbot certonly --webroot --webroot-path=/var/www/html --email sammy@jethrothelion.com --agree-tos --no-eff-email --force-renewal -d mydomain.com -d www.mydomain.com

执行后查看certbot-etc卷内的/etc/letsencrypt/live/mydomain.com/目录是否有证书文件。如果生成失败,检查:

  • 域名是否正确解析到Windows服务器的公网IP
  • 80端口是否可访问(用curl http://mydomain.com/.well-known/acme-challenge/test测试,返回404即路径可达)

3. 检查Windows环境的网络与防火墙设置

  • Windows Defender防火墙:确保放行80、443端口,可临时关闭防火墙测试(测试后重新开启)
  • Docker端口映射:确认docker-compose里的端口绑定是0.0.0.0:80:80和0.0.0.0:443:443(默认"80:80"就是绑定所有IP,若用WSL2后端的Docker,需确认WSL2与主机网络互通)
  • 路由器端口转发:确认转发的是Windows主机的内网IP,而非WSL2的虚拟IP(WSL2后端可切换Docker为Windows主机网络模式,或在WSL2内配置端口转发)

4. 修正WordPress站点URL

即便Nginx做了HTTP转HTTPS,若WordPress后台的站点URL还是HTTP,会导致跳转异常或显示HTTP。可通过两种方式修改:

  • 登录WordPress后台,在设置-常规里把WordPress地址(URL)和站点地址(URL)改成https://mydomain.com
  • 无法登录后台时,直接修改数据库:
    docker-compose exec db mysql -u root -p
    # 输入数据库密码后执行以下命令
    USE wordpress;
    UPDATE wp_options SET option_value = 'https://mydomain.com' WHERE option_name = 'siteurl' OR option_name = 'home';
    

5. 重启服务并检查日志

修改配置后重启所有服务:

docker-compose down
docker-compose up -d

检查Nginx日志,确认是否存在证书加载错误:

docker-compose logs webserver

若日志显示SSL_CTX_use_certificate_chain_file() failed,回到步骤1和2重新排查证书问题。


内容的提问来源于stack exchange,提问作者jethrothelion

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.07.20 19:02:14