node工具之http-proxy-middleware

简介

一个轻松的配置代理服务器的中间件,让Node.js代理变得简单

url路径

 foo://example.com:8042/over/there?name=ferret#nose \_/ \______________/\_________/ \_________/ \__/ | | | | | scheme authority path query fragment

基本使用

var express = require('express');var proxy = require('http-proxy-middleware');var app = express();app.use( '/api', proxy({ target: 'http://www.example.org', changeOrigin: true }));app.listen(3000);

两种形式

var apiProxy = proxy('/api', { target: 'http://www.example.org' });//同样效果var apiProxy = proxy('http://www.example.org/api');

配置

var options = { target: 'http://www.example.org', // 目标 changeOrigin: true, // 虚拟站点必须 ws: true, // 代理websocket pathRewrite: { '^/api/old-path': '/api/new-path', // 重写路径 }, router: { // when request.headers.host == 'dev.localhost:3000', // override target 'http://www.example.org' to 'http://localhost:8000' 'dev.localhost:3000': 'http://localhost:8000' }};

实际使用

const express = require("express");const next = require("next");const dev = process.env.NODE_ENV !== "production"; //判断是否是开发环境const app = next({ dev });const handle = app.getRequestHandler();const compression = require("compression");const port = parseInt(process.env.PORT, 10) || 6776;const proxy = require("http-proxy-middleware");const proxyOption = { target: "http://127.0.0.1:6688", pathRewrite: { "^/api/": "/" // 重写请求,api/解析为/ }, changeOrigoin: true};app .prepare() .then(() => { const server = express(); if (dev) { server.use("/api/*", proxy(proxyOption)); } if (!dev) { server.use(compression()); //gzip } server.get("/", (req, res) => app.render(req, res, "/home")); server.get("/home", (req, res) => app.render(req, res, "/home")); server.get("/books", (req, res) => app.render(req, res, "/books")); server.get("/articles", (req, res) => app.render(req, res, "/articles")); server.get("/login", (req, res) => app.render(req, res, "/login")); server.get("/markdown", (req, res) => app.render(req, res, "/markdown")); server.get("/books", (req, res) => app.render(req, res, "/books")); server.get("/write", (req, res) => app.render(req, res, "/write")); server.get("/book/:currentBookId", (req, res) => app.render(req, res, "/book/[currentBookId]", { currentBookId: req.params.currentBookId }) ); server.get("/article/:curArticleId", (req, res) => app.render(req, res, "/article/[curArticleId]", { curArticleId: req.params.curArticleId }) ); server.all("*", (req, res) => handle(req, res)); server.listen(port, err => { if (err) throw err; else console.log(`http start at ===> http://localhost:${port}`); }); }) .catch(ex => { console.error(ex.stack); process.exit(1); });

doc

相关文章