关于node.js 反向代理的问题

2013-01-14 19:32:52 +08:00
 madog
我把http://localhost/socket.io/这个地址 代理到8080端口给nodejs处理,
到http://localhost/socket.io/这步是好的,能显示Welcome to socket.io
http://localhost/socket.io/socket.io.js 也能找到
http://localhost/socket.io/1/websocket/ 这步能返回值
但是到了请求http://localhost/socket.io/1/websocket/ 7C5GwES1ZdxyxuNKvwnZ的时候总是报500错误,
直接请求http://localhost:8080/socket.io/1/websocket/ 7C5GwES1ZdxyxuNKvwnZ时正常。

这是什么原因?因该怎么解决?感谢!
4612 次点击
所在节点    Node.js
7 条回复
CosWind
2013-01-15 09:18:30 +08:00
可以贴一下你的代码么
Js
2013-01-15 09:24:03 +08:00
我记得nginx目前不支持websocket, 要么禁掉socket.io的websocket支持, 要么用haproxy顶前面
CosWind
2013-01-15 09:35:48 +08:00
@Js 人家是nodejs,socket.io
Js
2013-01-15 09:51:34 +08:00
@CosWind 楼主大意是80(反向代理,500)反代socket.io(8080,正常), 难道我理解错了.....
CosWind
2013-01-15 10:06:15 +08:00
@Js 看lz得意思,用nodejs作反向代理,部分成功,部分出错,原因不明,我之前也接触过socket.io,nodejs还是比较熟悉。
CosWind
2013-01-15 10:13:19 +08:00
jackyz
2013-01-15 11:22:45 +08:00
目测楼主是想代理 socket.io 的 ws 协议。目测可能出错。如果是的话,还需要处理 upgrade 事件。可以参照:

https://github.com/nodejitsu/node-http-proxy/blob/master/lib/node-http-proxy/http-proxy.js#L650

另外,为啥不直接用 nodejitsu 的 http-proxy 呢?

这是一个专为移动设备优化的页面(即为了让你能够在 Google 搜索结果里秒开这个页面),如果你希望参与 V2EX 社区的讨论,你可以继续到 V2EX 上打开本讨论主题的完整版本。

https://www.v2ex.com/t/57573

V2EX 是创意工作者们的社区,是一个分享自己正在做的有趣事物、交流想法,可以遇见新朋友甚至新机会的地方。

V2EX is a community of developers, designers and creative people.

© 2021 V2EX