CNode

怎么用node做个中转?

问答
Ssuxiaoxin发布于10 年前最后回复10 年前7 回复6465 浏览0 收藏

比如访问127.0.0.1:8080/url,实际上访问的是 www.abc.com/api/url

使用流,管道实现么?

查看回复

回复 (7)

E
eggggger#1·10 年前

可以直接把tcp流导过去,像这样

#!/usr/bin/env node

const net = require('net')
const stream = require('stream')

const transform = stream.Transform({
  transform(chunk, encoding, callback) {
    callback(null, chunk.toString().replace('localhost:10086', 'api.douban.com'))
  }
})

const server = net.createServer((socket) => {
  const client = net.connect(80, 'api.douban.com')
  socket.pipe(transform).pipe(client).pipe(socket)
})

server.listen(10086)

可以访问http://localhost:10086/v2/book/5402682

T
Treagzhao#4·10 年前
引用 suxiaoxin@bsdragon 代理https不行啊,有什么办法吗

@suxiaoxin 这些是http协议的相关知识 可以看看《HTTP权威指南》

Y
yeliex#5·10 年前

为什么不用nginx.....

S
suxiaoxin#6·10 年前

@eggggger 大神啊! 请问学习这方面知识看哪些书?还有我现在http可以用这个方法

如果用http代理https站点,怎么弄呢?

B
bsdragon#7·10 年前

express-http-proxy proxy(url, { forwardPath: function (req, res) { return newPath; } })(req, res, next);

参与回复
登录后即可参与回复。登录