通过套接字连接将 https 代理请求传递到命名管道(node.js)

Posted

技术标签:

【中文标题】通过套接字连接将 https 代理请求传递到命名管道(node.js)【英文标题】:Piping https proxy request over socket connection to named pipe (node.js) 【发布时间】:2014-02-16 00:36:23 【问题描述】:

我正在尝试构建一个转发代理服务器,它可以接收对 http url 的请求并将该请求通过管道传输到在命名管道上侦听的 https 服务器。

我知道我错过了一个步骤,但我不确定它是什么。这就是我正在尝试使用的...

function pipeToServer(browserRequest, browserSocket, browserRequestHead)

    var targetUrl = url.parse('https://' + browserRequest.url);
    var namedPipe = getNamedPipe()

    console.log("Attempting to connect to " + namedPipe)
    var proxySocket = net.connect(namedPipe, function() 
        console.log("Connected to destination server: " + namedPipe)
        console.log("Sending head: " + browserRequestHead)
        browserSocket.write('HTTP/' + browserRequest.httpVersion + ' 200 Connection Established\r\n' +'Proxy-agent: Node-Proxy\r\n' + '\r\n');
        proxySocket.write(browserRequestHead);
        proxySocket.pipe(browserSocket);
        browserSocket.pipe(proxySocket);
    );

连接成功,但目标服务器的请求处理程序(侦听命名管道)从未被触发。有趣的是,bro​​wserRequestHead 似乎也总是空白。

我迷路了。任何帮助表示赞赏。

【问题讨论】:

【参考方案1】:

原始问题中发布的代码结果不能正常工作。问题与正在使用的 ssl 证书有关。由于 TLS 握手失败,因此请求无法到达目标服务器。

【讨论】:

以上是关于通过套接字连接将 https 代理请求传递到命名管道(node.js)的主要内容,如果未能解决你的问题,请参考以下文章

如何管理代理服务器的长短连接

使用 HTTPS 代理的套接字上的 HTTPS 数据

CORBA 代理/代理通过 HTTP 还是通过套接字访问(对于 PHP)?

C++ boost::asio https 通过代理

nginx反向代理

Nginx 最全操作——nginx反向代理(5)