如何使用tcp_proxy_module从nginx转发对Node.js的请求?

时间:2011-08-12 06:47:13

标签: node.js nginx websocket socket.io

现在,我已使用nginx_tcp_proxy_module修补了nginx,并且在端口8080上运行正常。

如何将客户端连接到nignx的端口80,而不是Node.js的端口8080, 以便让nginx将请求转发给Node.js?

1 个答案:

答案 0 :(得分:2)

只需将8080更改为80.但TCP和HTTP位于同一端口is not possible

替代解决方案:

  • 在端口80上使用HAProxy
  • 设置nginx以侦听端口81
  • 在端口8080
  • 上运行node.js应用
  • HAProxy配置为
    • 转发Host: your.nodejs.socketio.com至127.0.0.1:8080
    • 将其他所有内容转发给127.0.0.1:81

如果您沿着这条路走下去,您可能希望保留客户端IP:

  • 配置HAproxy
  • 在nginx中使用RealIP module
  • 在socket.io中使用X-Forwarded-For

    socketio.handshakeData = function(data) {
        var d = socketio.Manager.prototype.handshakeData(data);
        d.ip = data.request.headers['x-forwarded-for'] || data.request.connection.remoteAddress;
        return d;
    };