V2EX = way to explore
V2EX 是一个关于分享和探索的地方
现在注册
已注册用户请  登录
madog
V2EX  ›  Node.js

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

  •  
  •   madog · 2013-01-14 19:32:52 +08:00 · 4612 次点击
    这是一个创建于 4331 天前的主题,其中的信息可能已经有所发展或是发生改变。
    我把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时正常。

    这是什么原因?因该怎么解决?感谢!
    7 条回复    1970-01-01 08:00:00 +08:00
    CosWind
        1
    CosWind  
       2013-01-15 09:18:30 +08:00 via Android
    可以贴一下你的代码么
    Js
        2
    Js  
       2013-01-15 09:24:03 +08:00
    我记得nginx目前不支持websocket, 要么禁掉socket.io的websocket支持, 要么用haproxy顶前面
    CosWind
        3
    CosWind  
       2013-01-15 09:35:48 +08:00 via Android
    @Js 人家是nodejs,socket.io
    Js
        4
    Js  
       2013-01-15 09:51:34 +08:00
    @CosWind 楼主大意是80(反向代理,500)反代socket.io(8080,正常), 难道我理解错了.....
    CosWind
        5
    CosWind  
       2013-01-15 10:06:15 +08:00 via Android
    @Js 看lz得意思,用nodejs作反向代理,部分成功,部分出错,原因不明,我之前也接触过socket.io,nodejs还是比较熟悉。
    jackyz
        7
    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 呢?
    关于   ·   帮助文档   ·   博客   ·   API   ·   FAQ   ·   实用小工具   ·   1953 人在线   最高记录 6679   ·     Select Language
    创意工作者们的社区
    World is powered by solitude
    VERSION: 3.9.8.5 · 22ms · UTC 00:41 · PVG 08:41 · LAX 16:41 · JFK 19:41
    Developed with CodeLauncher
    ♥ Do have faith in what you're doing.