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

GCP虚拟机部署Node.js Express服务器遇SSL协议错误求助

解决GCP部署Node.js Express服务器出现ERR_SSL_PROTOCOL_ERROR的问题

问题根源

你用https://<ip>:8000访问服务器,但默认的Express服务是纯HTTP协议,没有配置SSL证书和HTTPS监听逻辑。浏览器向仅支持HTTP的端口发起HTTPS请求,必然触发SSL协议错误。

可行修复方案

方案1:改用HTTP访问

直接访问http://<ip>:8000,只要GCP防火墙规则允许8000端口的TCP流量(从你的截图看已满足),就能正常访问。

方案2:给Express配置HTTPS服务

如果必须使用HTTPS,按以下步骤操作:

  1. 获取SSL证书:可以用Let's Encrypt免费证书,或者GCP提供的托管SSL证书(适合搭配负载均衡使用)。
  2. 修改Express代码,开启HTTPS监听:
    const https = require('https');
    const fs = require('fs');
    const express = require('express');
    const app = express();
    
    // 替换为你的证书文件实际路径
    const sslOptions = {
      key: fs.readFileSync('/path/to/your/private-key.pem'),
      cert: fs.readFileSync('/path/to/your/certificate.pem')
    };
    
    // 监听HTTPS默认端口443
    https.createServer(sslOptions, app).listen(443, () => {
      console.log('HTTPS服务已启动,监听端口443');
    });
    
    // 原有业务路由示例
    app.get('/', (req, res) => {
      res.send('服务正常运行');
    });
    
  3. 在GCP防火墙中添加规则,允许外部访问443端口的TCP流量。

额外验证步骤

  • 登录GCP虚拟机,执行netstat -tulpn | grep 8000(或443),确认Express进程正在监听目标端口。
  • 确认虚拟机的外部IP是静态IP,避免重启后IP变更导致访问失败。
  • 若使用了负载均衡或反向代理,需确保代理层已配置SSL证书,且后端与代理的通信规则正确。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.05 20:35:17