如何用nodejs搭建代理服务器

目录
  • 代理服务器的原理
  • 案例
  • 搭建代理服务器解决跨域问题
  • 原理解释

代理服务器的原理

案例

安装 express、http-proxy-middleware

app.js 文件 node app.js

var express = require('express');
var app = express();
app.use(express.static('./public'));
app.listen(3000);

在 public 文件夹下建立 a.html

<!DOCTYPE html>
<html lang="en">
<head>
    <meta charset="UTF-8">
    <meta http-equiv="X-UA-Compatible" content="IE=edge">
    <meta name="viewport" content="width=device-width, initial-scale=1.0">
    <title>Document</title>
</head>
<body>
    <!DOCTYPE html>
<html lang="en">
<head>
    <meta charset="UTF-8">
    <meta http-equiv="X-UA-Compatible" content="IE=edge">
    <meta name="viewport" content="width=device-width, initial-scale=1.0">
    <title>Document</title>
</head>
<body>
    <button onclick="Click()">点击发送请求</button>
    <script src="https://unpkg.com/axios/dist/axios.min.js"></script>
    <script>
        function Click() {
             axios('http://localhost:5000/b')
                 .then(function(res) {
                     console.log(res);
                 });
        }
    </script>
</body>
</html>
</body>
</html>

搭建接口服务器,接口服务器端口号 5000

node interface.js

var express = require('express');
var app = express();

app.get("/", (req, res) => {
    res.send("123");
});

app.get("/api/a", (req, res) => {
    res.send("a");
});

app.get("/b", (req, res) => {
    console.log(req.headers);
    res.send("b");
});

app.listen(5000);

访问http://localhost:3000/a.html

搭建代理服务器解决跨域问题

更改 app.js

var express = require('express');
var proxy = require('http-proxy-middleware');
var app = express();
app.use(express.static('./public'));

app.use('/api', proxy.createProxyMiddleware({
    target: 'http://localhost:5000',
    changeOrigin: false,
    pathRewrite: {
        "^/api": ""
    }
}));
app.listen(3000);

更改 a.html

<!DOCTYPE html>
<html lang="en">
<head>
    <meta charset="UTF-8">
    <meta http-equiv="X-UA-Compatible" content="IE=edge">
    <meta name="viewport" content="width=device-width, initial-scale=1.0">
    <title>Document</title>
</head>
<body>
    <!DOCTYPE html>
<html lang="en">
<head>
    <meta charset="UTF-8">
    <meta http-equiv="X-UA-Compatible" content="IE=edge">
    <meta name="viewport" content="width=device-width, initial-scale=1.0">
    <title>Document</title>
</head>
<body>
    <button onclick="Click()">点击发送请求</button>
    <script src="https://unpkg.com/axios/dist/axios.min.js"></script>
    <script>
        function Click() {
            // axios('http://localhost:5000/b')
            //     .then(function(res) {
            //         console.log(res);
            //     });

            axios('/api/b')
                .then(function(res) {
                    console.log(res);
                });
        }
    </script>
</body>
</html>
</body>
</html>

访问 http://localhost:3000/a.html

原理解释

将 a.html 请求地址改为 /api/b,那么发送请求的时候会自动补上主机和端口号http://localhost:3000

所以请求发送到了3000端口

参数含义

  • target: 转发到的目标地址
  • changeOrigin: 是否更改host。默认为false,不重写

true

false

  • pathRewrite:路径重写(在这里是去掉’api’)

最终请求被转发到了 http://localhost:5000/b

app.get("/b", (req, res) => {
    console.log(req.headers);
    res.send("b");
});

整个过程就像这样

以上为个人经验,希望能给大家一个参考,也希望大家多多支持我们。

(0)

相关推荐

  • 利用nodeJs anywhere搭建本地服务器环境的方法

    公司有个微信端项目,需要前端在手机上随时查看网页,于是乎用Node搭建了一个本地服务器环境,把网页地址发到QQ并用手机打开来查看. 首先去nodeJs官网下载最新版nodeJs https://nodejs.org/en/ 安装成功后win+r打开cmd 输入node -help 或者node -v查看是否安装成功 装好后输入 npm install anywhere -g来安装anywhere.注意如果是mac系统会提示你权限不够,需要在代码前加上 sudo获取管理员权限.即sudo npm

  • 浅谈使用nodejs搭建web服务器的过程

    使用 Node 创建 Web 服务器 什么是 Web 服务器? Web服务器一般指网站服务器,是指驻留于因特网上某种类型计算机的程序,Web服务器的基本功能就是提供Web信息浏览服务.它只需支持HTTP协议.HTML文档格式及URL,与客户端的网络浏览器配合. 大多数 web 服务器都支持服务端的脚本语言(php.python.ruby)等,并通过脚本语言从数据库获取数据,将结果返回给客户端浏览器. 目前最主流的三个Web服务器是Apache.Nginx.IIS. Node.js 提供了 htt

  • 深入理解nodejs搭建静态服务器(实现命令行)

    静态服务器 使用node搭建一个可在任何目录下通过命令启动的一个简单http静态服务器 完整代码链接 安装:npm install yg-server -g 启动:yg-server 可通过以上命令安装,启动,来看一下最终的效果 TODO 创建一个静态服务器 通过yargs来创建命令行工具 处理缓存 处理压缩 初始化 创建目录:mkdir static-server 进入到该目录:cd static-server 初始化项目:npm init 构建文件夹目录结构: 初始化静态服务器 首先在src

  • nodejs搭建本地服务器并访问文件操作示例

    本文实例讲述了nodejs搭建本地服务器并访问文件操作.分享给大家供大家参考,具体如下: 安装node:https://nodejs.org/en/download/ 在本地建立目录:f:/nodetest,在该目录下新建index.html作为我们将要访问的内容.新建server.js作为node开启的入口: $ cd f:/nodetest $ mkdir index.html $ mkdir server.js index.html文件里简单写一点东西: <!DOCTYPE html>

  • NodeJS搭建HTTP服务器的实现步骤

    前言 在 NodeJS 中用来创建服务的模块是 http 核心模块,本篇就来介绍关于使用 http 模块搭建 HTTP 服务器和客户端的方法,以及模块的基本 API. HTTP 服务器 1.创建 HTTP 服务器 在 NodeJS 中,创建 HTTP 服务器可以与 net 模块创建 TCP 服务器对比,创建服务器有也两种方式. 方式 1: const http = require("http"); const server = http.createServer(function(re

  • 如何用nodejs搭建代理服务器

    目录 代理服务器的原理 案例 搭建代理服务器解决跨域问题 原理解释 代理服务器的原理 案例 安装 express.http-proxy-middleware app.js 文件 node app.js var express = require('express'); var app = express(); app.use(express.static('./public')); app.listen(3000); 在 public 文件夹下建立 a.html <!DOCTYPE html>

  • Nodejs 搭建简单的Web服务器详解及实例

    使用 Nodejs 搭建简单的Web服务器 使用Nodejs搭建Web服务器是学习Node.js比较全面的入门教程,因为要完成一个简单的Web服务器,你需要学习Nodejs中几个比较重要的模块,比如:http协议模块.文件系统.url解析模块.路径解析模块.以及301重定向问题,下面我们就简单讲一下如何来搭建一个简单的Web服务器. 作为一个Web服务器应具备以下几个功能: 1.能显示以.html/.htm结尾的Web页面 2.能直接打开以.js/.css/.json/.text结尾的文件内容

  • nodejs搭建本地http服务器教程

    由于不做php相关的东西,懒得装apache,干脆利用nodejs搭建一个本地的服务器用于测试. nodejs这玩意儿吧,对做前端的介入后端简直就是一把利器.而且目前,nodejs也越来越有商用价值. nodejs其实是非常底层的,从功能上说,它既是apache也是php.像搭建http服务器这种功能,本来是apache已经封装好的,但nodejs需要我们手动来搭建.其实在实际应用中,我们可以使用现成的框架.但这里,我想手动搭建,也加深一下对http服务器的理解. 我们node执行下面这个文件,

  • nodejs 搭建简易服务器的图文教程(推荐)

    www文件夹下 template文件夹下 server.js代码: const express=require('express'); const static=require('express-static'); //托管静态文件 const cookieParser=require('cookie-parser'); //解析cookie const cookieSession=require('cookie-session'); //解析session const bodyParser=r

  • 在windows上用nodejs搭建静态文件服务器的简单方法

    在windows上用nodejs搭建一个静态文件服务器,即使你一点基础没有也能学会nodejs静态文件服务器的搭建,本文介绍的非常详细,很适合零基础入门的朋友学习. 首先安装nodejs: •新建一个node文件夹 •下载node.exe到该文件夹 •下载npm然后解压到该文件夹 •现在node文件夹是这样的 •把该目录加入到path环境变量 •在命令行执行 node -v npm -v 如果得到了版本号则表示nodejs安装完成 •在命令行中执行 npm config set registry

  • Nodejs搭建wss服务器教程

    本文为大家分享了Nodejs搭建wss服务器的教程,供大家参考,具体内容如下 首先使用OpenSSL创建自签名证书: #生成私钥key文件 openssl genrsa 1024 > /path/to/private.pem // #通过私钥文件生成CSR证书签名 openssl req -new -key /path/to/private.pem -out csr.pem // #通过私钥文件和CSR证书签名生成证书文件 openssl x509 -req -days 365 -in csr.

  • NodeJs搭建本地服务器之使用手机访问的实例讲解

    作为一名不懂后台的前端工程师来说,利用node.js搭建服务器,是一个非常好的选择.下面搭建一个简单的服务器: var app=require("express")(); //接收来自用户的任何请求 app.use(function(req,res){ res.write("The response from server"); res.end(); }); 这个ip地址,楼主之前一直以为是在这里指定IP地址,意味着别人输入这个IP地址就能访问到你的服务器了,其实并

  • nodejs搭建本地服务器轻松解决跨域问题

    最近把以前用jquery写的一个小demo拿出来运行的,刚开始的时候忘了开启本地服务导致控制台一直报XMLHttpRequest cannot load file:///C:/Users/79883/Desktop/ajax/data.json?{%22username%22:%22lcl@qq.com%22,%22pwd%22:%22Home20170702%22}. Cross origin requests are only supported for protocol schemes:

  • 如何用Anaconda搭建虚拟环境并创建Django项目

    一.创建虚拟环境 (1)打开cmd命令窗口 (2)创建虚拟环境 conda create -n mydjango_env (3)查看虚拟环境 conda env list *号表示当前使用的环境 (4)激活创建的虚拟环境 activate mydjango_env 二.安装Django 在新环境激活的状态下安装Django conda install django 三.创建项目 (1)进入需要创建项目的文件目录 (2)创建项目 django-admin startproject 项目名 此时Dj

随机推荐