前提准备,宝塔面板,配置有nginx,PM2项目管理,以及nodejs通信项目一个
添加完项目后点击右边映射并填上你的域名以及端口号 域名:port1
注意端口号不要和你的nodejs项目使用同一个端口,这里就称为port2
这里的域名映射实际意思的你通过访问你的ip:port2,反向代理到ip:port1的服务,只不过你的ip被域名替换了而已
然后我们点击左边的网站,点击你创建的映射站点的设置
点击反向代理点击配置文件,在这里修改你的nginx配置就行了,按自己的需求来
宝塔已经是配好了http和websocket的相关配置了
这样域名映射就全部完成了,如果要配置ssl证书的话,点击设置里的ssl把你的key和pem复制上去就行了
怎么搞ssl证书可以去各大服务器提供厂商去申请,图方便就在直接在你租服务器的厂商那里搜索ssl就行了
坑点:
然后就是一个坑点,你映射域名的时候一定要保证你的域名是备案过的,否则如果你使用了socket.io这个通信库,你的socket.io通信可能会被卡掉,但是http get和post不会有影响,也就是说只有两种可能要么nginx配置问题要么是域名问题,但是事实上socket.io的nginx配置其实就是上面的配置没问题的,那么其实就是域名的问题
正常来说连接成功了会有这几条记录
如果你的域名没有备案就会只有第一条,后续就卡住了,原因大概就是,客户端第一次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'
}