Coffee_Candy

143 分类: nodejs后端开发,宝塔nodejs后端配置篇

宝塔PM2 nodejs 项目 域名映射 以及socket.io通信的映射踩坑

前提准备,宝塔面板,配置有nginx,PM2项目管理,以及nodejs通信项目一个

添加完项目后点击右边映射并填上你的域名以及端口号 域名:port1
注意端口号不要和你的nodejs项目使用同一个端口,这里就称为port2
这里的域名映射实际意思的你通过访问你的ip:port2,反向代理到ip:port1的服务,只不过你的ip被域名替换了而已
2024-08-22T14:02:17.png

然后我们点击左边的网站,点击你创建的映射站点的设置
2024-08-23T09:32:24.png
点击反向代理点击配置文件,在这里修改你的nginx配置就行了,按自己的需求来
宝塔已经是配好了http和websocket的相关配置了
2024-08-22T14:12:50.png
这样域名映射就全部完成了,如果要配置ssl证书的话,点击设置里的ssl把你的key和pem复制上去就行了
怎么搞ssl证书可以去各大服务器提供厂商去申请,图方便就在直接在你租服务器的厂商那里搜索ssl就行了
2024-08-22T14:16:09.png

坑点:

然后就是一个坑点,你映射域名的时候一定要保证你的域名是备案过的,否则如果你使用了socket.io这个通信库,你的socket.io通信可能会被卡掉,但是http get和post不会有影响,也就是说只有两种可能要么nginx配置问题要么是域名问题,但是事实上socket.io的nginx配置其实就是上面的配置没问题的,那么其实就是域名的问题
正常来说连接成功了会有这几条记录
2024-08-22T14:21:46.png
如果你的域名没有备案就会只有第一条,后续就卡住了,原因大概就是,客户端第一次get完之后返回的消息没有返回给客户端,你的客户端就会报这个连接错误

Connection Error: TransportError: xhr poll error
    at Polling.onError (E:\desktop\xcx\node_modules\engine.io-client\build\cjs\transport.js:46:37)
    at Request.<anonymous> (E:\desktop\xcx\node_modules\engine.io-client\build\cjs\transports\polling.js:238:18) 
    at Request.Emitter.emit (E:\desktop\xcx\node_modules\@socket.io\component-emitter\index.js:143:20)
    at Request.onError (E:\desktop\xcx\node_modules\engine.io-client\build\cjs\transports\polling.js:343:14)     
    at Timeout._onTimeout (E:\desktop\xcx\node_modules\engine.io-client\build\cjs\transports\polling.js:316:30)  
    at listOnTimeout (node:internal/timers:569:17)
    at processTimers (node:internal/timers:512:7) {
  description: 404,
  context: XMLHttpRequest {
    UNSENT: 0,
    OPENED: 1,
    HEADERS_RECEIVED: 2,
    LOADING: 3,
    DONE: 4,
    readyState: 4,
    onreadystatechange: [Function (anonymous)],
    responseText: '',
    responseXML: '',
    status: 404,
    statusText: null,
    open: [Function (anonymous)],
    setDisableHeaderCheck: [Function (anonymous)],
    setRequestHeader: [Function (anonymous)],
    getResponseHeader: [Function (anonymous)],
    getAllResponseHeaders: [Function (anonymous)],
    getRequestHeader: [Function (anonymous)],
    send: [Function (anonymous)],
    handleError: [Function (anonymous)],
    abort: [Function (anonymous)],
    addEventListener: [Function (anonymous)],
    removeEventListener: [Function (anonymous)],
    dispatchEvent: [Function (anonymous)]
  },
  type: 'TransportError'
}

#none

作者: Coffee_Candy

版权: 除特别声明,均采用BY-NC-SA 4.0许可协议,转载请表明出处

目录Content

评论