简单用node.js实现反向代理

废话不多说,

//index.js

const http = require('http'),
    express = require('express'),
    httpProxy = require('http-proxy'),
    proxy = httpProxy.createProxyServer({
        xfwd: true
    }),
    config = require('./config'),
    fs = require('fs'),
    path = require('path'),
    app = express()

app.use((req, res) => {
    config.forEach(o=> {
        if(req.headers.host == o.host){
            proxy.web(req, res, {
                target: 'http://' + o.proxy
            })
        }
    })
})

var cookie = ""
proxy.on('proxyReq', function (proxyReq, req, res) {
    req.headers.cookie = cookie + req.headers.cookie
    proxyReq._headers = req.headers
    return req
});

proxy.on('proxyRes', function (proxyRes, req, res) {
    var JSESSIONID = proxyRes.headers['set-cookie']
    if (JSESSIONID) {
        cookie = JSESSIONID;
        res.setHeader('Set-Cookie', proxyRes.headers['set-cookie'])
    }
});

proxy.on('error', function (proxyReq, req, res) {
    res.send("<h1>404 Not Found</h1>")
});

console.log("服务已经启动!")

app.listen(80)
// config.js

module.exports = [
    {
        host: 'www.test.com',
        proxy: '127.0.0.1:8001'
    },
    {
        host: 'pc.test.com',
        proxy: '127.0.0.1:8002'
    },
    {
        host: 'admin.test.com',
        proxy: '127.0.0.1:8800'
    },
]
最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
【社区内容提示】社区部分内容疑似由AI辅助生成,浏览时请结合常识与多方信息审慎甄别。
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

相关阅读更多精彩内容

友情链接更多精彩内容