12月20, 2017

Node.js 反向代理

最近研究下反向代理,由于安装一键 lnmp 包时间还是比较长的,还是 Node.js 比较顺手.

现在简单记录一下如何使用 Node.js 进行反向代理网站。

首先安装 Node.js,本次操作在 ubuntu 下已经验证

sudo apt-get install npm
sudo npm install -g n
sudo n latest

这样安装完了 最新版本的 Node.js 下面来写一下简单的脚本。

var http = require("http");
var httpProxy = require("http-proxy");
var proxy = httpProxy.createProxyServer({});
// 捕获异常
proxy.on("error", function () {
    res.writeHead(500, {
        "Content-Type": "text/plain"
    });
    res.end("服务端错误");
});

var server = http.createServer(function (req, res) {
    var host = req.headers.host;
    var ip = req.headers["x-forwarded-for"] || req.connection.remoteAddress;
    console.log("your ip is ${ip},host is ${host}");
    switch (host) {
        case "你的域名":
            proxy.web(req, res, {
                target: "目标网站"
            });
            break;
        default:
            res.writeHead(200, {
                "Content-Type": "text/plain"
            });
            res.end("Node.js 反代");
    }
});

console.log("Listening on port 80");
server.listen(80);

本文链接:https://blog.qfdk.me/post/Node.js reverse proxy.html

-- EOF --