关闭

node.js反向代理的实现

时间: 2018-11-25阅读: 3178标签: node

在实际工程开发中,会有前后端分离的需求。使用node.js反向代理的目的:实现前后端分离,前端减少路径请求的所需的路由文件

 

方式一:http-proxy-middleware中间件

第一步:安装http代理中间件


npm install http-proxy-middleware --save

第二步: express文件中(app.js)配置反向代理


// 1. 引入http-proxy-middleware模块
var proxy = require(‘http-proxy-middleware‘);

// 2. 代理中间件配置项
var options = {
    target: ‘http://192.168.182.66:8080/‘, // target host
    changeOrigin: true, // needed for virtual hosted sites
};
// 3. 将请求路径按“代理中间件配置项”进行请求
app.use(proxy(‘/login/*‘,options));

解析:本地的请求地址是localhost:3000/login,当经过代理配置后,会将localhost:3000替换为http://192.168.182.66:8080/;所以实际的请求路径是http://192.168.182.66:8080/login;


方式二:Http Proxy 模块

(1)安装 Http Proxy

npm install http-proxy

(2)创建模拟后端服务的server

service.js(监听 8000)

var http = require("http");
http.createServer(function(request, response) {
    console.log('request received');
    response.writeHead(200, {
        "Content-Type": "text/plain"
    });
    response.write("I'm service A");
    response.end();
}).listen(8000);
console.log('service started');

(3)创建反向代理server

proxy.js(监听 8080)

var http = require('http')
var httpProxy = require('http-proxy')

var proxy = httpProxy.createProxyServer();

proxy.on('error', function(err, req, res) {
    res.end();
});

var proxy_server = http.createServer(function(req, res) {
    proxy.web(req, res, {
        target: 'http://localhost:8000'
    });
});

proxy_server.listen(8080, function() {
    console.log('proxy server is running ');
});

(4)测试

先启动 service.js

node service.js

再启动 proxy.js

node proxy.js

浏览器中访问 proxy 

http://localhost:8080/

可以看到 service 输出的信息 I'm service A,实现了反向代理的基本功能。


站长推荐

1.云服务推荐: 国内主流云服务商,各类云产品的最新活动,优惠券领取。地址:阿里云腾讯云华为云

2.广告联盟: 整理了目前主流的广告联盟平台,如果你有流量,可以作为参考选择适合你的平台点击进入

链接: http://www.fly63.com/article/detial/1416

关闭

在不同的项目下切换不同版本的 Node.js

有时候几乎每周都会发布新版本的 Node.js —— 每隔几周发布一次小版本,每隔几个月发布一次主要版本。如果你是一个需要在不同程序和项目之间切换的码农,可能会发现需要运行不同版本的 Node

nodejs做后端的好处有哪些

Node.js是服务器端的 JavaScript 运行环境,它具有无阻塞(non-blocking)和事件驱动(event-driven)等的特色。Node.js 使用了一个事件驱动、非阻塞式 I/O 的模型,使其轻量又高效。

当node升级后导致webpack打包出错,node-saas出问题的解决办法

node-saas就需要python环境了,所以很多人又不知道,就升级了node,导致node-saas无法使用了,结果导致node-saas出错,解决办法如下:npm install -g node-gyp ,npm install --global --production windows-build-tools

happypack提升项目构建速度

运行在 Node.js 之上的 Webpack 是单线程模型的,也就是说 Webpack 需要处理的任务需要一件件挨着做,不能多个事情一起做。happypack把任务分解给多个子进程去并发的执行,子进程处理完后再把结果发送给主进程。

开发可伸缩Web应用程序的7个关键Node.js优势

Node.js已成为构建可伸缩Web应用程序的首选技术。由于它提供了许多重要的好处,因此在开发人员中获得了极大的欢迎。 根据Stack Overflow的2020 开发人员调查显示,在一个热情的社区的支持下

nodejs 文本逐行读写功能的实现

利用nodejs实现:逐行读写(从一个文件逐行复制到另外一个文件);逐行读取、处理和写入(读取一行,处理后,写入另一个文件)1.所需要的模块: fs,os,readline。功能的实现:readWriteFileByLine.js,功能的调用:index.js

Node.js创建服务器和模拟客户端请求

服务器是某种长期运行,等待请求资源的应用程序,Web服务器是使用HTTP协议,等待客户端连接后请求资源的驻守应用程序;HTTP协议是应用层的协议,在传输层依然是使用TCP或者UDP协议

用node探究http缓存

用node搞web服务和直接用tomcat、Apache做服务器不太一样, 很多工作都需要自己做。缓存策略也要自己选择,虽然有像koa-static,express.static这些东西可以用来管理静态资源,但是为了开发或配置时更加得心应手,知其所以然,有了解http缓存的必要。另外,http缓存作为一个前端优化的一个要点,也应该有所了解。

YodaOS:一个属于 Node.js 社区的操作系统

YodaOS 的架构跟 Android 类似,YodaOS 是 Rokid 研发的首个全栈开源 AI 操作系统,由 Linux 内核、硬件抽象层、AI 抽象层和 JavaScript 框架组成,专为下一代人机交互设备开发,可用于智能音箱、智能家居、智能穿戴和车载等多种设备和场景。

Node编码规范

采用2个空格缩进,而不是tab缩进。空格在编辑器中与字符是等宽的,而tab可能因编辑器的设置不同。2个空格会让代码看起来紧凑、明快。永远用var声明变量,不加var时会将其变为全局变量,这样可能会意外污染上下文,或是被意外污染。

点击更多...

内容以共享、参考、研究为目的,不存在任何商业目的。其版权属原作者所有,如有侵权或违规,请与小编联系!情况属实本人将予以删除!