加油
努力

小程序连接腾讯云轻量服务器时无法访问API怎么办?

小程序连接腾讯云轻量服务器时无法访问 API,常见于网络配置、安全组、HTTPS 限制等问题。以下是详细的排查和解决步骤:


🔍 一、检查网络连通性

  1. 确认服务器公网 IP 是否正确

    • 登录腾讯云控制台 → 轻量应用服务器 → 查看实例的「公网 IP」。
    • 在本地用 ping 公网IP 测试是否能通(注意:部分服务器禁 ping,但不影响实际通信)。
  2. 测试端口是否开放

    telnet 公网IP 端口号
    # 例如:
    telnet 123.123.123.123 8080

    如果连接失败,可能是防火墙或安全组未放行。


🔐 二、检查腾讯云安全组设置

这是最常见的问题!

  1. 登录腾讯云控制台 → 轻量应用服务器 → 找到你的实例 → 「防火墙」或「安全组」。

  2. 确保已添加规则允许外部访问你的 API 端口(如 80、443、8080 等)。

    ✅ 正确配置示例:

    • 协议类型:TCP
    • 端口:80 / 443 / 8080(根据你的服务)
    • 源 IP:0.0.0.0/0(允许所有 IP 访问,生产环境建议限制)
    • 备注:允许小程序访问 API

⚠️ 注意:轻量服务器默认只开放了部分端口(如 80、443、22),其他端口需手动添加规则。


🛠️ 三、检查服务器本地防火墙(如 iptables、ufw)

即使腾讯云安全组放行,服务器系统级防火墙也可能拦截。

  • Ubuntu/Debian 使用 ufw:

    sudo ufw status
    sudo ufw allow 8080/tcp
  • CentOS 使用 firewalld:

    sudo firewall-cmd --list-ports
    sudo firewall-cmd --add-port=8080/tcp --permanent
    sudo firewall-cmd --reload

🌐 四、确保后端服务监听在正确的地址

检查你的 API 服务是否绑定到了 0.0.0.0,而不是 127.0.0.1

错误示例(Node.js):

app.listen(8080, '127.0.0.1') // 只能本机访问

✅ 正确写法:

app.listen(8080, '0.0.0.0') // 允许外部访问

重启服务后测试:

curl http://localhost:8080/api/test
curl http://公网IP:8080/api/test

🔒 五、小程序要求 HTTPS 和域名(关键!)

⚠️ 微信小程序不允许使用 HTTP 请求,必须使用 HTTPS,且域名需备案并配置合法业务域名。

解决方案:

  1. 使用 HTTPS 域名

    • 申请一个域名(如 api.yourdomain.com),并在腾讯云完成 ICP 备案。
    • 为域名申请 SSL 证书(可使用腾讯云免费证书或 Let’s Encrypt)。
    • 配置 Nginx 反向X_X + HTTPS,将请求转发到你的 API 服务。
  2. 配置 Nginx 示例(HTTPS)

    server {
        listen 443 ssl;
        server_name api.yourdomain.com;
    
        ssl_certificate /path/to/fullchain.pem;
        ssl_certificate_key /path/to/privkey.pem;
    
        location / {
            proxy_pass http://127.0.0.1:8080;
            proxy_set_header Host $host;
            proxy_set_header X-Real-IP $remote_addr;
        }
    }
  3. 在小程序管理后台配置 request 合法域名

    • 登录 微信公众平台
    • 设置 → 开发管理 → 开发者ID → 「request 合法域名」中添加:
      https://api.yourdomain.com

🧪 六、调试技巧

  1. 在手机上打开小程序调试模式

    • 小程序右上角「…」→ 调试 → 查看 network 请求是否报错(如 net::ERR_CERT_AUTHORITY_INVALID、404、403 等)。
  2. 使用在线工具测试 API

    • 浏览器访问:https://api.yourdomain.com/test,看是否能返回数据。
  3. 查看服务器日志

    # Node.js 日志
    pm2 logs
    # 或查看 nginx 错误日志
    tail -f /var/log/nginx/error.log

✅ 总结:常见原因与解决方案

问题 解决方法
安全组未放行端口 在腾讯云控制台添加 TCP 规则
服务未监听 0.0.0.0 修改代码绑定到 0.0.0.0
小程序使用 HTTP 必须改用 HTTPS 域名
域名未加入合法域名 在小程序后台添加 request 域名
本地防火墙拦截 关闭或放行对应端口
服务未启动 ps aux | grep node 检查进程

如果你提供具体错误信息(如小程序报错内容、API 地址、端口、是否用了 HTTPS 等),我可以给出更精准的建议。

云服务器