你当前的问题是:

浏览器可以通过 http://8.130.70.131:8089/api/banner/getIndexBanner 访问接口,但无法通过 https://zhongyuele.top/api/banner/getIndexBanner 访问。

结合你提供的 nginx.conf 配置文件内容,以下是可能原因 + 解决方案的完整分析。
在这里插入图片描述


🔍 问题定位

✅ nginx 已配置 SSL 域名代理

你在配置中已正确添加了如下 server 块:

server {
    listen 443 ssl;
    server_name zhongyuele.top www.zhongyuele.top;

    ssl_certificate /usr/local/app_zp/shop/shop-api/ssl/zhongyuele.top_public.crt;
    ssl_certificate_key /usr/local/app_zp/shop/shop-api/ssl/zhongyuele.top.key;

    location / {
        proxy_pass http://127.0.0.1:8089;
        ...
    }
}

理论上应能通过 https://zhongyuele.top 正常访问后端接口。


❌ 可能导致失败的原因及排查建议

✅ 1. Nginx 没有监听 443 端口

  • 现象:

    • systemctl status nginx 中没有报错;
    • 但浏览器无法访问 HTTPS 地址。
  • 检查方式:

    netstat -tulnp | grep :443
    
  • 解决方法:

    • 如果没有 nginx 占用 443,说明配置未生效,请执行:
      nginx -t
      systemctl reload nginx
      

✅ 2. 阿里云安全组未开放 443 端口

  • 现象:
    • nginx 启动正常;
    • 本地测试(curl/wget)可以访问;
    • 外网浏览器无法访问。
  • 解决方法:
    登录阿里云控制台 → 找到你的 ECS 实例 → 安全组规则 → 添加入方向规则允许 TCP 443 端口

✅ 3. 域名未正确解析到服务器公网 IP

  • 现象:
    • 浏览器提示 ERR_CONNECTION_TIMED_OUTERR_NAME_NOT_RESOLVED
  • 解决方法:
    • 登录域名管理后台(如阿里云、腾讯云等);
    • 添加 A 记录指向你的服务器公网 IP(例如 8.130.70.131);
    • 使用 ping zhongyuele.topnslookup zhongyuele.top 检查是否解析成功。

✅ 4. 证书路径错误或权限不足

  • 现象:
    • nginx 启动失败或 HTTPS 页面显示“连接不安全”;
    • 日志 /var/log/nginx/error.log 中提示证书加载失败。
  • 解决方法:
    • 确认证书路径是否正确:

      ls -l /usr/local/app_zp/shop/shop-api/ssl/
      
    • 确保 nginx 用户有读取权限:

      chmod 644 /usr/local/app_zp/shop/shop-api/ssl/*.crt
      chmod 600 /usr/local/app_zp/shop/shop-api/ssl/*.key
      chown nginx:nginx /usr/local/app_zp/shop/shop-api/ssl/*
      

✅ 5. 浏览器缓存或 HSTS 设置影响

  • 现象:
    • 曾经访问过该域名并设置了 HSTS;
    • 更换证书或配置后仍无法访问。
  • 解决方法:
    • 清除浏览器缓存;
    • 在 Chrome 地址栏输入:chrome://net-internals/#hsts
    • 删除 zhongyuele.top 的 HSTS 设置。

✅ 6. proxy_pass 设置不当

  • 当前配置:

    proxy_pass http://127.0.0.1:8089;
    
  • 注意点:

    • 确保应用服务确实在本机运行在 8089 端口;
    • 可以使用以下命令验证本地访问:
      curl https://localhost/api/banner/getIndexBanner
      

✅ 推荐排查顺序

步骤操作目的
1ping zhongyuele.top确认域名解析是否正确
2curl -k https://zhongyuele.top/api/banner/getIndexBanner忽略证书验证测试访问
3nginx -t && systemctl reload nginx检查配置并重载服务
4netstat -tulnp | grep :443查看 nginx 是否监听 443
5阿里云控制台检查安全组是否放行 443
6/var/log/nginx/error.log查看是否有证书加载失败等错误

✅ 示例:完整的 HTTPS Server Block(供参考)

server {
    listen 443 ssl;
    server_name zhongyuele.top www.zhongyuele.top;

    ssl_certificate /usr/local/app_zp/shop/shop-api/ssl/zhongyuele.top_public.crt;
    ssl_certificate_key /usr/local/app_zp/shop/shop-api/ssl/zhongyuele.top.key;

    ssl_protocols TLSv1.2 TLSv1.3;
    ssl_ciphers HIGH:!aNULL:!MD5;

    location / {
        proxy_pass http://127.0.0.1:8089;
        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;
    }
}

✅ 补充建议:强制 HTTP 跳转 HTTPS(可选)

如果你希望所有请求都走 HTTPS,可在 HTTP server 块中添加跳转:

server {
    listen 80;
    server_name zhongyuele.top www.zhongyuele.top;
    return 301 https://$host$request_uri;
}

🧪 最终建议操作流程

  1. 确认域名解析是否正确;
  2. 检查阿里云安全组是否开放 443;
  3. 检查 nginx 是否监听 443;
  4. 检查证书路径和权限;
  5. 使用 curl -k 测试访问;
  6. 使用浏览器清除缓存或尝试隐身模式;
  7. 查看日志 /var/log/nginx/error.log

如仍有问题,请提供以下信息以便进一步诊断:

  • nginx -t 输出结果;
  • curl -k https://zhongyuele.top/api/banner/getIndexBanner 返回的内容;
  • /var/log/nginx/error.log 中相关日志片段;
  • 域名解析截图或 dig zhongyuele.top 输出。
Logo

北京人形旗下天工造物具身智能开源社区,聚焦具身天工与慧思开物两大平台

更多推荐