现在我们正在进入真正的工作。让我们首先了解我们的代理将做什么。此 代理服务器 将镜像传入的请求,然后创建相应的URL。然后它将被定向到第三方服务器。在此应用程序中,我将第三方服务器限制为baidu.com。例如,如果客户端请求http://www.shenjidaili.com /images/srpr/logo11w.png,文件在 https://www.baidu.com/ images/srpr/logo11w.png将送达。那么,让我们开始吧。
正如我之前所说,Node.js在库中非常丰富。这些库称为模块。可能最常用的Nodejs模块是'http'模块。它定义了通过HTTP协议传输数据所需的功能。我们需要它来开发我们的代理服务器,它将服务于HTTP请求。
您可以使用'require'函数导入Node.js模块。
const http = require('http');
HTTP模块具有createServer功能,可用于构建Web服务器。
http.createServer(onRequest)。听(3000);
我的代理服务器将侦听端口'3000'。createServer函数将onRequest函数作为我们接下来要实现的参数。
function onRequest(request,response){
console.log('serve:'+ request.url);
//代理服务器代码
}
onRequest函数将把客户端请求和我们要发送给客户端的响应作为参数。我们将在onRequest函数中编写代理服务器实现。
接下来,我们将定义一组值作为选项。
var options = {
主机名:'
www.baidu.com
',
端口:80,
路径:request.url,
方法:request.method,
headers:request.headers
};
以上选项值不言自明。接下来,我们编写代理对象的请求和响应。
var proxy = http.request(options,function(res){ response.writeHead(res.statusCode,res.headers)
res.p
ip
e(响应,{
结束:是的
});
});
request.pipe(proxy,{
结束:是的
});
你可以注意到我在这里使用了管道。管道在处理流方面很有效。在基于Node.js的HTTP服务器中,请求和响应是流。该请求是可读流,而响应是可写流。管道允许您从一个源读取数据并非常容易地写入目标。您不必像对待fs那样自己管理流程。
我们将所有代码放在一起。
var http = require('http');
http.createServer(onRequest)。听(3000);
function onRequest(request,response){
console.log('serve:'+ request.url);
var options = {
主机名:'
www.baidu.com
',
端口:80,
路径:request.url,
方法:request.method,
headers:request.headers
};
var proxy = http.request(options,function(res){
response.writeHead(res.statusCode,res.headers)
res.pipe(响应,{
结束:是的
});
});
request.pipe(proxy,{
结束:是的
});
}
一切都很好。是时候让我们的文件运行了。将内容复制到文件名http_proxy.js并使用以下命令运行。
node http_proxy.js
而已。现在,您的Ubuntu服务器上运行了一个正在运行的代理服务器。
测试代理服务器
让我们使用我们的Firefox浏览器测试我们的服务器。打开浏览器。使用端口正确键入地址栏中的URL /
IP地址
。 如果要在同一服务器上进行检查,则必须键入127.0.0.1作为IP地址。键入http://127.0.0.1:3000/ images/srpr/logo11w.png在浏览器地址栏按回车键。
757
144
上一篇:关于代理机架(模型)
下一篇:使用神鸡代理预订更便宜的航班