Nginx配置HTTP跳转HTTPS不生效,HTTP访问提示站点无法到达
问题根因
你当前配置的核心错误有2个:
- 80端口的server块
server_name *.example.com仅匹配二级子域名(比如www.example.com),无法匹配根域名example.com,访问根域名的HTTP请求无法匹配到该规则。 - 跳转规则中使用了
$server_name变量,该变量会读取你配置的server_name值即*.example.com,导致最终跳转到非法地址https://*.example.com,自然无法访问。
修复步骤
- 修改
nginx.conf的80端口server块配置如下:
server { listen 80; # 同时匹配根域名和所有二级子域名 server_name example.com *.example.com; # 用$host读取用户实际请求的域名,保证跳转目标正确 return 301 https://$host$request_uri; }
- (可选)如果需要支持根域名的HTTPS访问,确保你的SSL证书同时覆盖
example.com和*.example.com,然后修改443端口的server_name配置:
server { listen 443 ssl; # 同时匹配根域名和www域名 server_name example.com www.example.com; # 其余原有配置保持不变 }
- 重启Nginx容器生效配置,执行命令:
docker compose restart reverseproxy - 清理浏览器缓存后测试,301是永久重定向,旧的错误跳转规则会被浏览器长期缓存,建议用无痕模式测试避免缓存干扰。
内容的提问来源于stack exchange,提问作者Rick A
相关产品推荐
相关产品推荐

