重庆分公司,新征程启航
为企业提供网站建设、域名注册、服务器等服务
怎么在node.js中利用http-proxy 创建一个代理服务器?很多新手对此不是很清楚,为了帮助大家解决这个难题,下面小编将为大家详细讲解,有这方面需求的人可以来学习下,希望你能有所收获。
创新互联公司主营虞城网站建设的网络公司,主营网站建设方案,重庆APP开发公司,虞城h5小程序开发搭建,虞城网站营销推广欢迎虞城等地区企业咨询代理又分 正向代理 和 反向代理:
正向代理:帮助局域网内的用户访问外面的服务。
反向代理:帮助外面的用户访问局域网内部的服务。
一、安装 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
看完上述内容是否对您有帮助呢?如果还想对相关知识有进一步的了解或阅读更多相关文章,请关注创新互联行业资讯频道,感谢您对创新互联的支持。