node.js使用http-proxy创建代理服务器

发布时间:2020-05-16 01:44:32.98编辑:佚名阅读(492)

代理,也称网络代理,是一种特殊网络服务,允许一个终端通过代理服务与另一个终端进行非直接的连接,这样利于安全和防止被攻击。

代理服务器,就是代理网络用户去获取网络信息,就是信息的中转,负责转发。

代理又分 正向代理 和 反向代理:

正向代理:帮助局域网内的用户访问外面的服务。

反向代理:帮助外面的用户访问局域网内部的服务。

一、安装http-proxy

npm install http-proxy --save

二、代理本地服务

const http = require('http');
const httpProxy = require('http-proxy');
 
//创建一个代理服务
const proxy = httpProxy.createProxyServer();
 
//创建http服务器并监听8888端口
let server = http.createServer(function (req, res) {
    //将用户的请求转发到本地9999端口上
    proxy.web(req, res, {
        target: 'http://localhost:9999'
    });
    //监听代理服务错误
    proxy.on('error', function (err) {
        console.log(err);
    });
});
server.listen(8888, '0.0.0.0');

9999端口服务代码:

const http = require('http');
http.createServer(function (req, res) {
    res.end('port : 9999');
}).listen(9999, '0.0.0.0');

当们在本地访问 8888 端口时,proxy 会帮我们把请求代理到 9999 端口服务,然后返回数据。

二、通过host实现多个虚拟主机,共用一个端口

const http = require('http');
const httpProxy = require('http-proxy');
//创建一个代理服务
const proxy = httpProxy.createProxyServer();
 
//虚拟主机
const hosts = {
    'www.a.me': 'http://localhost:8888',
    'www.b.me': 'http://localhost:9999',
};
 
//创建http服务器并监听80端口
let server = http.createServer(function (req, res) {
    //获取主机名
    let host = req.headers['host'];
    host = host.split(':')[0];
    //根据主机名,找到要代理的服务
    let target = hosts[host];
    if (target) {
        proxy.web(req, res, {
            target: target
        });
        proxy.on('error', function (err) {
            console.log(err);
        });
    } else {
        res.end('end');
    }
});
server.listen(80, '0.0.0.0');

8888.js服务代码:

const http = require('http');
http.createServer(function (req, res) {
    res.end('port : 8888');
}).listen(8888, '0.0.0.0');

9999.js服务代码:

const http = require('http');
http.createServer(function (req, res) {
    res.end('port : 9999');
}).listen(9999, '0.0.0.0');

注意 www.a.me 和 www.b.me 这两个域名需加入 C:\Windows\System32\drivers\etc\hosts 文件中。

127.0.0.1 www.a.me
127.0.0.1 www.b.me

当我们访问 www.a.me 或 www.b.me 时,就会自动帮我们代理到指定端口的服务上去。

  关键字:node.jshttp-proxy创建代理服务器


鼓掌

0

正能量

0

0

呵呵

0


评论区