node实现简单的反向代理服务器
每当提起反向代理器,人们通常一想到的就是 Nginx,但是今天我们暂时忽略大名鼎鼎的 Nginx,采用同样也是使用单线程、事件循环的服务端小弟——Node 来达成
跨域问题是前端开发很常见的问题
解决方案有很多种
- jsonp返回
- Access-Control-Allow-Origin:'*' (需要注意的是 对于post请求会变成option请求需求后端支持)
- 前端添加代理
前端添加代理
以vue-cli为例,前端添加代理
dev: { env: require('./dev.env'), port: 8888, autoOpenBrowser: true, assetsSubDirectory: 'static', assetsPublicPath: '/', proxyTable: { '/api':{ target: 'http://localhost:3000', changeOrigin: true, } }
其中'/api'为接口的前缀,target为后端服务地址
前端请求示例
vm.$http.post('/api/reg', JSON.stringify(info)).then(() => { }, () => { });
反向代理
反向代理可以理解为指定一个服务地址为内部服务器地址。
为什么需要反向代理
如果只是作为接口请求,其实前端搭建代理服务器就可以了,但是代理服务器并不能满足所有的日常开发。
比如说单点登录的实现,需求服务端做302跳转。但是前端文件没有部署到后端服务器时,set-cookie是不能成功种下cookie登录信息的。
这就需要在后端服务器添加反向代理。
示例如下
const http = require('http'); const httpProxy = require('http-proxy'); const proxy = httpProxy.createProxyServer(); const proxyServer = http.createServer((req, res) => { proxy.web(req, res, { target: 'http://localhost:8888', }); }); proxyServer.listen(8088, () => { console.log('proxy server is running '); });
这样前端开发就可以在8088端口了,当然热加载功能是在前端服务器的8888端口
以上就是本文的全部内容,希望对大家的学习有所帮助,也希望大家多多支持我们。
相关推荐
-
抛弃Nginx使用nodejs做反向代理服务器
时下不少场景,都是申请一个 VPS 主机来托管运行 Web 项目的,小弟我也不例外,购买了一个小型的 Win 03 VPS 使用着.在使用的过程中,面临一个问题,就是同一类型的服务端环境还好--但如果是一个 PHP.一个 ASP. 一个 JSP 的三种类型的服务端项目并存着,该怎么分配唯一的 80 端口呢?因为商业 WWW 网站的话,往往只能占用 80 端口,--当然,如果只是做服务的话,如接口之类的,使用其他端口就不会与 80 端口冲突了.许多开发者都会面临到 80 端口这个问题,并且实际情
-
Node.js站点使用Nginx作反向代理时配置GZip压缩的教程
node.js 开发的站点,如果你也是用了nginx实现反向代理. 那么在服务端可以轻松实现 gzip 压缩,让站点浏览更顺畅. 前提条件: node.js + nginx 反向代理. node.js 需要做的工作: express 4.0以下版本: app.use(express.compress()); //主要是这句 app.use(express.json()); app.use(express.urlencoded()); app.use(express.bodyParser());
-
Linux安装NodeJs并配合Nginx实现反向代理
本文介绍了Linux安装NodeJs并配合Nginx实现反向代理 ,具体如下: NodeJs是什么? Node.js是一个JavaScript运行环境(runtime).实际上它是对Google V8引擎进行了封装.V8引 擎执行Javascript的速度非常快,性能非常好. Node.js对一些特殊用例进行了优化,提供了替代的API,使得V8在非浏览器环境下运行得更好. 本地安装(OS X) 版本选择 V4.4.4,长期支持版本,成熟可靠 V6.2.0 稳定版本,最新特性 这里我还是倾向于使用
-
详解用node.js实现简单的反向代理
之前用node.js实现简单的反向代理,最近需要回顾,就顺便发到随笔上了 不多说直接上代码! const http = require('http'); const url = require('url'); const querystring = require('querystring'); http.createServer(function(oreq, ores) { console.log("服务已开启"); if (oreq) { if (oreq.url !== '/fa
-
腾讯云(ubuntu)下安装 nodejs + 实现 Nginx 反向代理服务器
本文将介绍如何给腾讯云上的 Ubuntu Server 12.04 LTS 64位主机安装 node 及 nginx,并简单配置反向代理. 笔者在整个安装过程中遇到不少麻烦(不赘述),如果你希望少踩坑,可以按本文的步骤进行安装部署. 一. 新版 nodejs 安装 这里强烈推荐使用 nvm (Node版本管理器),其它方式的安装或多或少都有些问题. 具体步骤如下: 1. 通过 git 指令下载nvm 执行指令如下,我们把nvm下载到 /root/git/ 中去(记得要先安装 git): [roo
-
利用node.js实现反向代理的方法详解
本文主要给大家介绍的是关于利用node.js实现反向代理的相关内容,分享出供大家参考学习,下面话不多说,来一起看看详细的介绍: 跨域问题是前端开发很常见的问题解决方案有很多种 jsonp返回 Access-Control-Allow-Origin:'*' (需要注意的是 对于post请求会变成option请求需求后端支持) 前端添加代理 前端添加代理 以vue-cli为例,前端添加代理 dev: { env: require('./dev.env'), port: 8888, autoOpenB
-
node实现简单的反向代理服务器
每当提起反向代理器,人们通常一想到的就是 Nginx,但是今天我们暂时忽略大名鼎鼎的 Nginx,采用同样也是使用单线程.事件循环的服务端小弟--Node 来达成 跨域问题是前端开发很常见的问题 解决方案有很多种 jsonp返回 Access-Control-Allow-Origin:'*' (需要注意的是 对于post请求会变成option请求需求后端支持) 前端添加代理 前端添加代理 以vue-cli为例,前端添加代理 dev: { env: require('./dev.env'), po
-
Node.js简单入门前传
1.什么是NodeJS 简单的说 Node.js 就是运行在服务端的 JavaScript. Node.js 是一个基于Chrome JavaScript 运行时建立的一个平台. Node.js是一个事件驱动I/O服务端JavaScript环境,基于Google的V8引擎(Google的Chrome浏览器使用的JavaScript执行环境), V8引擎执行Javascript的速度非常快,性能非常好. 2.为什么选择NodeJS 如果你是一个前端程序员,你不懂得像PHP.Python或Ruby等
-
node.js使用 http-proxy 创建代理服务器操作示例
本文实例讲述了node.js使用 http-proxy 创建代理服务器操作.分享给大家供大家参考,具体如下: 代理,也称网络代理,是一种特殊网络服务,允许一个终端通过代理服务与另一个终端进行非直接的连接,这样利于安全和防止被攻击. 代理服务器,就是代理网络用户去获取网络信息,就是信息的中转,负责转发. 代理又分 正向代理 和 反向代理: 正向代理:帮助局域网内的用户访问外面的服务. 反向代理:帮助外面的用户访问局域网内部的服务. 一.安装 http-proxy npm install http-
-
python实现简单的TCP代理服务器
本文实例讲述了python实现简单的TCP代理服务器的方法,分享给大家供大家参考. 具体实现代码如下: # -*- coding: utf-8 -*- ''' filename:rtcp.py @desc: 利用python的socket端口转发,用于远程维护 如果连接不到远程,会sleep 36s,最多尝试200(即两小时) @usage: ./rtcp.py stream1 stream2 stream为:l:port或c:host:port l:port表示监听指定的本地端口 c:host
-
详解用node搭建简单的静态资源管理器
本文介绍了用node搭建简单的静态资源管理器,分享给大家,具体如下: 我么都知道,老牌的3p服务器都是自带静态资源管理器的.但是node不同,它没有web容器,它的路由地址和真实地址可以没有联系,所有node的优点,是可以把路由做得相当漂亮. 但静态资源管理器也是必不可少的东西,今天我主要用node的fs模块,自己手写一个简单的静态资源管理器. 首先,建一个static文件夹,所有的静态文件都将放到这个文件夹下 引包 var http = require("http"); var ur
-
Python简单实现的代理服务器端口映射功能示例
本文实例讲述了Python简单实现的代理服务器端口映射功能.分享给大家供大家参考,具体如下: 一 代码 1.模拟服务端代码 import sys import socket import threading #回复消息,原样返回 def replyMessage(conn): while True: data = conn.recv(1024) conn.send(data) if data.decode().lower() == 'bye': break conn.close() def ma
-
Node之简单的前后端交互(实例讲解)
node是前端必学的一门技能,我们都知道node是用的js做后端,在学习node之前我们有必要明白node是如何实现前后端交互的. 这里写了一个简单的通过原生ajax与node实现的一个交互,刚刚学node的朋友可以看一看.一方面理解服务端与客户端是如何交互的,一方面更熟悉node开发. 先贴代码:(有兴趣的可以copy到本地自己run一下) 主页面的html index.html: <!doctype> <html> <head> <meta charset=&
-
node实现简单的增删改查接口实例代码
node实现简单的增删改查接口的全部代码如下: // 数据存储在users.json文件中 const express = require("express"); const fs = require("fs"); const cors = require("cors"); const bodyParser = require("body-parser"); const app = express(); app.use(cor
随机推荐
- Angular 2父子组件数据传递之@Input和@Output详解 (上)
- vmware 12 安装 mac os 10.12正式版的教程
- js检测用户输入密码强度
- Postgresql ALTER语句常用操作小结
- 信息滚动效果的实例讲解
- Tomcat 部署程序方法步骤
- java Thread 多线程
- iOS scrollview实现三屏复用循环广告
- 静态gb2312编码在项目传值出现中文乱码现象
- 详解虚拟机中CentOS 7 网络和ssh的配置
- JavaScript希尔排序、快速排序、归并排序算法
- JS出现失效的情况总结
- 一个php作的文本留言本的例子(一)
- php快递单号查询接口使用示例
- mac下安装mysql忘记密码的修改方法
- c# 实现子窗口关闭父窗口也关闭的简单实例
- C#生成设置范围内的Double类型随机数的方法
- 关于数据库设计中主键问题的思考
- JavaScript运动框架 多值运动(四)
- jQuery实现简单的滑动导航代码(移动端)