有人配过 Nodejs 的 node-spdyproxy 么
有人配过 Nodejs 的 node-spdyproxy 么
Github 地址是: https://github.com/igrigorik/node-spdyproxy
用 SPDY 来写代理觉得蛮有意思的, 想体验下 SPDY 相对 HTTP 什么感觉,
我按照 README 里操作了一遍, 并在浏览器导入了 mykey.cert
这个证书.
$> openssl req -x509 -nodes -days 365 -newkey rsa:2048 -keyout mykey.pem -out mycert.pem
$> spdyproxy -k keys/mykey.pem -c keys/mycert.pem -p 44300 -U user -P pass
可后来结果还是 No data recieved…
我参考另外一个中文的说明, 也没找到具体的问题在哪里 http://blog.csdn.net/yanhandle/article/details/7925196 请问有人弄过这个么?
当然可以。根据你的描述,你已经尝试了使用 node-spdyproxy
来设置一个 SPDY 代理,并且在浏览器中安装了证书。然而,你遇到了问题,访问时显示“无数据接收”。让我们一起看看可能的原因及解决方法。
1. 配置文件和命令
首先,确认一下你的配置是否正确。根据你提供的命令:
openssl req -x509 -nodes -days 365 -newkey rsa:2048 -keyout mykey.pem -out mycert.pem
spdyproxy -k keys/mykey.pem -c keys/mycert.pem -p 44300 -U user -P pass
确保以下几点:
- 生成的密钥和证书路径正确。
- 确保
spdyproxy
命令被正确安装并且在系统路径中可用。 - 代理监听的端口(这里为
44300
)没有被其他服务占用。
2. 浏览器设置
确保你的浏览器配置正确地指向了这个代理服务器。例如,在 Chrome 中,你可以通过以下步骤来设置代理:
- 打开设置。
- 搜索“代理”或“网络设置”。
- 设置代理服务器地址为
localhost
,端口为44300
。
3. 安装证书
确保证书已正确安装并信任。这通常需要手动操作,特别是在 Chrome 或 Firefox 中。对于 Chrome,你可以通过以下步骤安装证书:
- 在 Chrome 中,打开设置 -> 高级设置 -> 管理证书。
- 导入你的
.pem
文件,并将其添加到受信任的根证书颁发机构列表中。
4. 示例代码
如果你想要更详细地了解如何使用 node-spdyproxy
,可以参考以下简单的示例代码:
const spdy = require('spdy');
const fs = require('fs');
const proxy = require('node-spdyproxy');
// 读取证书和密钥
const options = {
key: fs.readFileSync('keys/mykey.pem'),
cert: fs.readFileSync('keys/mycert.pem')
};
// 创建 SPDY 服务器
spdy.createServer(options, (req, res) => {
console.log(`Request received on path ${req.url}`);
res.writeHead(200);
res.end('Hello, SPDY!');
}).listen(44300, () => {
console.log('SPDY server listening on port 44300');
});
// 启动代理
proxy({
keyPath: 'keys/mykey.pem',
certPath: 'keys/mycert.pem',
port: 44300,
username: 'user',
password: 'pass'
});
这段代码创建了一个 SPDY 服务器,并启动了一个代理,监听在 44300
端口。
5. 调试
如果仍然无法正常工作,建议检查日志输出,查看是否有错误信息。同时,也可以尝试使用 Wireshark 或其他网络抓包工具来检查 SPDY 数据流是否正确传输。
希望这些信息能帮助你解决问题!
关于配置 node-spdyproxy
的问题,可以参考以下步骤进行。首先,确保你已经安装了 Node.js 和 npm。
-
先安装
node-spdyproxy
包:npm install -g node-spdyproxy
-
生成自签名证书:
openssl req -x509 -nodes -days 365 -newkey rsa:2048 -keyout mykey.pem -out mycert.pem
-
使用自签名证书运行
node-spdyproxy
:spdyproxy -k mykey.pem -c mycert.pem -p 44300 -U user -P pass
如果遇到“No data received”的问题,可以检查以下几个方面:
- 确保你的浏览器已正确安装并信任该自签名证书。
- 确认防火墙或安全软件没有阻止连接。
- 确认 SPDY 代理是否正在运行,可以通过查看日志信息来判断。
- 如果使用的是 Chrome 浏览器,可能需要启用实验性功能来支持 SPDY。
示例代码:
const spdyproxy = require('spdyproxy');
const options = {
keyPath: 'mykey.pem',
certPath: 'mycert.pem',
port: 44300,
username: 'user',
password: 'pass'
};
spdyproxy(options)
.then(proxy => {
console.log('SPDY Proxy started on port:', proxy.address().port);
})
.catch(err => {
console.error('Failed to start SPDY Proxy:', err);
});
确保在实际环境中替换 mykey.pem
和 mycert.pem
为正确的路径。如果仍然无法解决问题,请检查日志输出以获取更多信息。