基于华为云ECS搭建后端天气中转服务实践

举报
yd_251449288 发表于 2026/10/23 00:45:06 2026/10/23
【摘要】 本文记录基于华为云ECS部署Node.js天气中转后端的完整实践,采用Express框架代理百度开放平台天气接口,解决小程序前端直接暴露密钥的安全隐患;包含代码实现、ECS环境部署、安全组配置、小程序对接流程,并梳理部署过程遇到的跨域、端口访问、服务保活等踩坑经验,适合新手学习前后端项目上云。

一、前言
 
在之前的微信小程序天气项目开发中,直接在前端调用开放天气接口会存在密钥暴露的安全问题,容易导致接口配额被盗用。因此我选择使用华为云弹性云服务器ECS搭建Node.js后端中转服务,由后端代理请求天气API,再把处理好的数据返回给小程序前端,既保障密钥安全,又能完成项目部署上线,本次记录完整实践过程。
 
二、方案选型
 
1. 服务器:华为云ECS,稳定可靠,方便部署Node服务、配置端口访问

2. 后端技术栈:Node.js + Express,搭配axios请求第三方接口、cors处理跨域

3. 前端:微信小程序,负责页面展示、交互,请求本机/云服务器后端接口

4. 接口来源:百度开放平台天气接口,获取实时温度、最高温、最低温、天气状况
 
三、后端核心代码
 
package.json

{
  "name": "weather-backend",
  "version": "1.0.0",
  "description": "百度天气接口中转后端,获取实时温度、天气、最高最低气温",
  "main": "server.js",
  "dependencies": {
    "express": "^4.18.2",
    "axios": "^1.6.0",
    "cors": "^2.8.5"
  }
}
server.js

const express = require('express')
const axios = require('axios')
const cors = require('cors')
const app = express()
app.use(cors())

// 这里填入你自己在百度开放平台申请的ak
const BAIDU_AK = "你的百度ak密钥"

app.get('/api/weather', async (req, res) => {
  try {
    const { location } = req.query
    const resp = await axios.get('https://api.map.baidu.com/weather/v1/', {
      params: {
        location: location,
        ak: BAIDU_AK
      }
    })
    res.json(resp.data)
  } catch (err) {
    res.status(500).json({code:-1,msg:"接口请求失败"})
  }
})

const port = 3000
app.listen(port,()=>{
  console.log(`服务启动成功,监听端口${port}`)
}) 
四、华为云ECS部署步骤
 
1. 购买并登录ECS:在华为云控制台申领/购买ECS实例,选择Linux系统(CentOS或者Ubuntu),获取公网IP、登录账号密码,使用远程工具连接服务器。

2. 环境安装

- 安装Node.js、npm环境

- 在服务器新建项目文件夹,上传上面两份代码文件

- 执行  npm install  安装express、axios、cors依赖包

3. 安全组放行端口:进入华为云ECS安全组配置,放行3000端口,不然外网无法访问后端服务。

4. 后台常驻运行:使用pm2工具托管服务,保证断开远程连接之后,后端程序持续运行,命令:

npm install -g pm2
pm2 start server.js 

5. 测试接口:浏览器访问  http://ECS公网IP:3000/api/weather?location=城市经纬度 ,验证能否正常返回天气JSON数据。
 
五、小程序前端对接
 
修改小程序js里面的请求地址,把原来本地地址替换为华为云ECS公网接口地址,同时在微信小程序后台配置request合法域名,编译小程序,即可从云服务器后端拿到天气数据,渲染页面展示实时气温、最高最低温、天气情况。
 
六、踩坑总结
 
1. 跨域问题:一开始小程序请求直接报错跨域,引入cors中间件后解决。

2. 安全组端口:忘记放行3000端口,一直访问超时,排查很久才定位到是华为云安全组策略拦截。

3. 密钥安全:一定不要把AK密钥写在小程序前端,中转后端的意义就是隐藏密钥。

4. 服务中断:直接node server.js运行,关掉远程窗口服务就停止,pm2托管是云服务器部署Node服务常用方案。
 
七、心得体会
 
本次借助华为云ECS完成后端服务部署,让我理解了前后端分离项目的完整上线流程。ECS作为基础云服务器,自由度很高,可以自主部署后端程序。这次实践,也加深了我对接口代理、跨域、云服务器安全组、服务常驻这些开发运维知识点的理解,为之后更多小程序、Web项目上云打下基础。

【声明】本内容来自华为云开发者社区博主,不代表华为云及华为云开发者社区的观点和立场。转载时必须标注文章的来源(华为云社区)、文章链接、文章作者等基本信息,否则作者和本社区有权追究责任。如果您发现本社区中有涉嫌抄袭的内容,欢迎发送邮件进行举报,并提供相关证据,一经查实,本社区将立刻删除涉嫌侵权内容,举报邮箱: cloudbbs@huaweicloud.com
  • 点赞
  • 收藏
  • 关注作者

评论(0)

0/1000
抱歉,系统识别当前为高风险访问,暂不支持该操作

全部回复

上滑加载中

设置昵称

在此一键设置昵称,即可参与社区互动!

*长度不超过10个汉字或20个英文字符,设置后3个月内不可修改。

*长度不超过10个汉字或20个英文字符,设置后3个月内不可修改。