碰到了一个问题,公司内网,需要访问另一个地区的机房,那边的机房只有少数的端口是打开的,打开端口需要写申请,而且很麻烦,需要访问里面的内网,之前想过用 ssh -L 参数来解决,但是只有一个端口。。 所以想利用类似于 php 中 file_get_contents 之类的进行回显,就算是个代理吧。
写了几行代码
var http = require('http');
var url = require("url");
http.createServer(function(req,res){
var params = [];
params = url.parse(req.url,true).query;
http.get(params['url'],function(r){
var body = '';
r.on('data',function(data){body+=data});
r.on('end',function(){
res.writeHead(200,{'content-type':'text/html'});
res.end(body);
});
r.on('error',function(e){console.log("[ERROR] "+e)});
});
}).listen(8081);
比如我那边的内网服务器 8081 端口可以访问,我想利用 get 的功能进行内网中的访问,然后进行辉县 通过? url=内网机器 1:80 这样的访问,但是出现了一定的问题,问有没有更好的解决方法, ps 这个 nodejs 是再 kibana 下面发现的。/opt/kibana/node/bin/node , 就想利用一下。 访问了之后 可以回显一个网页 但是 服务器接着崩溃
events.js:141
throw er; // Unhandled 'error' event
^
Error: connect ECONNREFUSED 127.0.0.1:80
at Object.exports._errnoException (util.js:870:11)
at exports._exceptionWithHostPort (util.js:893:20)
at TCPConnectWrap.afterConnect [as oncomplete] (net.js:1061:14)
thx 大家
1
Jaylee 2016-07-12 21:00:12 +08:00
const request = require('request')
request( url , ( err, response, body ) => { console.log( err, response, body ) } ) |
2
qfdk OP @Jaylee 这个库还要 npm install 啊,有没有就是用自带的 api 的做法?而且这样只会显示在 console 里面,简单地说就是一个在线代理= =
|
3
fcicq 2016-07-12 22:28:29 +08:00
|
6
fcicq 2016-07-12 22:53:25 +08:00 1
@qfdk 细节问题不管. 不管你用 http 也好还是 request 库也好, pipe 肯定有一个可以用的. 大文件按你目前的做法在接收完之前就是阻塞的.
|
7
chairuosen 2016-07-12 22:55:46 +08:00
@qfdk install 跟显示在哪里没关系啊
|
8
qfdk OP @chairuosen 我知道啊,这是两件事情,可能我表述的不清楚。
|
10
dlllcs 2016-07-13 09:49:44 +08:00
感觉可以使用 vpn 或者 shadowsocks 等进行互通
|
11
qfdk OP @dlllcs 一开始也想过,但是服务器有限制,本地写的 bash 脚本需要进行对远程数据中心不同端口的 web 端进行访问,无奈之下,只能想到代理,没有 php ,只有 node
|
12
qfdk OP @fcicq
``` var http = require("http"); var url = require("url"); var server = http.createServer(function (sreq, sres) { var params = []; params = url.parse(sreq.url, true).query; var creq = http.get(params['url'], function (cres) { sres.writeHead(cres.statusCode, cres.headers); cres.pipe(sres); }); sreq.pipe(creq); }); server.listen(8081, "127.0.0.1", function () { console.log("listen on" + server.address().port + "......"); }); ``` 写了这么一段代码感觉应该没有问题了。。 但是还是报错,和我上面报错一样。 两者都是可以回显一个页面然后就退出了。 |