我有以下设置: 客户端=>代理服务器=>原始服务器
我分别为这些片段使用以下Node.js库: isomorphic-fetch => http-proxy => http
以下是两个文件的设置要点,每个服务器一个,客户端一个:https://gist.github.com/headquarters/850cbb199ff397c6da56fb8d86113a7e
要在本地运行此命令,请在一个shell中运行node server.js
,在另一个shell中运行node fetch.js
。
在服务器运行的情况下,如果我在浏览器中转到http://localhost:8818
,则会收到示例响应{"a":"b"}
,因此可以正常工作。如果我转到http://localhost:9818
,我也会也得到该响应,因此代理似乎工作正常。但是,如果运行包含HTTP代理的DEBUG=* node fetch.js
,则请求失败(请参见https://gist.github.com/headquarters/850cbb199ff397c6da56fb8d86113a7e#file-failure-txt的输出)。
如果没有agent
属性,则fetch命令在命令行上可以正常工作。如何调试此套接字挂起错误?
答案 0 :(得分:0)
结果是我没有足够仔细地阅读https-proxy-agent文档。这一行有点令人困惑:An HTTP(s) proxy http.Agent implementation for HTTPS
- PROXY本身可以是HTTP或HTTPS,但是对于这种代理代理而言,原始服务器必须是HTTPS。对于HTTP源服务器,我必须使用http-proxy-agent。因此,套接字挂起可能来自https.Agent尝试访问HTTP端点。当我切换到http-proxy-agent时,它起作用了。