有人配过 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 请问有人弄过这个么?


2 回复

当然可以。根据你的描述,你已经尝试了使用 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。

  1. 先安装 node-spdyproxy 包:

    npm install -g node-spdyproxy
    
  2. 生成自签名证书:

    openssl req -x509 -nodes -days 365 -newkey rsa:2048 -keyout mykey.pem -out mycert.pem
    
  3. 使用自签名证书运行 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.pemmycert.pem 为正确的路径。如果仍然无法解决问题,请检查日志输出以获取更多信息。

回到顶部