nodejs默认开启的是http服务,一般来说如果用nodejs作为后端的话,也会设置代理去进行请求,但是我之前不会啊😕,那时候编写接口我会新解析一个二级域名,然后把node映射到这个域名,这时候就需要启动node的https服务了,其实也很简单,几步就可以完成!当然此教程只针对express框架!!!同时欢迎大家访问我的博客小贺的个人博客 - 记录我的编程旅程与成长
express设置https
首先下载https模块
npm i https
然后创建引入模块,并且配置相关证书!
const express = require("express");
const cors = require("cors");
const {
createServer
} = require("https");
const fs = require("fs");
//--create
const app = express();
//--use
app.use(cors());
app.get('/', (req, res) => {
res.send('hello')
})
const httpServer = createServer({
key: fs.readFileSync("证书xxx.key"),
cert: fs.readFileSync("证书xxx.pem"),
},
app
);
httpServer.listen(4399, () => {
console.log("https服务器已经启动......")
})
需要注意如果跨域了可以使用cors模块,然后就是这个证书的路径了,我的文件目录存放证书文件的目录和这个文件是同级所以直接使用./了,这个需要根据自己的进行调整。这时候咱们访问 https://localhost:4399/ 就可以看到页面已经打印了hello,下面就是配置自己的路由即可!!!
下面说一下使用代理的方法
宝塔进行代理
如果使用宝塔代理接口的话node是不需要使用https的,直接上代码。注意这个是配置前端网站,node单独使用宝塔自带的node项目或者pm2管理器都可以,不需要使用外网映射!
location /api
{
proxy_pass http://127.0.0.1:xxxx; # 将此处端口号替换为你的 Node.js 端口
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;
}
至于这个再哪里设置,如图:
这里要注意的是我用的是/api,这个要根据自己的去修改,也就是说这时候你访问 xxxx.com/api/xxxx 时候他会代理成你的node的/api/xxxx。
最后呢我想说要一下,我最开始都是新开域名的,但是我发现好多网站都是请求当前域名/api/xxx什么的,后来我研究一下,才恍然大悟,于是就记录一下,也算是解开了自己好久的疑惑😃