Nginx无法从HTTP重定向到HTTPS问题求助
Nginx HTTP无法重定向到HTTPS及HTTPS访问异常排查
问题现象
- 访问HTTP(http://example.xyz / http://www.example.xyz)可正常打开页面,但未自动重定向到HTTPS
- 手动访问HTTPS时出现异常(截图如下)


- DNS配置:www.example.xyz的CNAME记录指向example.xyz,example.xyz配置了A记录
当前Nginx配置
upstream hype { server hype:7171; } server { listen 80; server_name example.xyz www.example.xyz; return 301 https://example.xyz$request_uri; } server { listen 443 ssl; server_name example.xyz www.example.xyz; ssl_certificate /etc/nginx/certs/fullchain.pem; ssl_certificate_key /etc/nginx/certs/privkey.pem; location / { proxy_pass http://hype; proxy_http_version 1.1; proxy_set_header Host $host; proxy_set_header X-Real-IP $remote_addr; proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for; proxy_set_header X-Forwarded-Proto $scheme; } }
排查及解决步骤
验证Nginx配置并重载
先检查配置语法是否合法:nginx -t若输出
test is successful,立即重载Nginx使配置生效:systemctl reload nginx(使用service管理的环境,执行
service nginx reload)检查80端口监听状态
确认Nginx是否实际监听80端口,避免端口被其他进程占用:ss -tulpn | grep nginx输出需包含
:80的监听记录,否则排查占用80端口的进程并停止,或调整Nginx监听端口。排查HTTPS异常原因
- 验证SSL证书覆盖范围:查看证书是否同时包含两个域名:
确认输出中存在openssl x509 -in /etc/nginx/certs/fullchain.pem -text -noout | grep -A 5 "Subject Alternative Name"DNS:example.xyz和DNS:www.example.xyz,否则需重新申请覆盖双域名的SSL证书。 - 修复证书文件权限:确保Nginx进程能读取证书文件:
(用户组根据Nginx实际运行用户调整,常见为chmod 644 /etc/nginx/certs/fullchain.pem /etc/nginx/certs/privkey.pem chown nginx:nginx /etc/nginx/certs/fullchain.pem /etc/nginx/certs/privkey.pemwww-data)
- 验证SSL证书覆盖范围:查看证书是否同时包含两个域名:
检查配置冲突
查看所有生效的Nginx配置,确认没有其他监听80端口的server块覆盖重定向规则:nginx -T搜索
listen 80,确保只有当前重定向的server块在监听80端口。排除浏览器缓存影响
使用浏览器隐私模式访问HTTP地址,或清除浏览器缓存后测试,避免旧响应缓存导致重定向不触发。确认DNS解析正确性
执行命令验证域名解析到的IP是否与服务器实际IP一致:nslookup example.xyz nslookup www.example.xyz若解析IP不符,等待DNS生效(通常10-30分钟),或检查DNS配置是否有误。
内容的提问来源于stack exchange,提问作者ksernow
相关产品推荐
相关产品推荐

