HTTP反向代理服务器的编写程序

189 篇文章 0 订阅
107 篇文章 2 订阅

如果你经常使用 Node.js 编写 Web 服务端程序,一定对使用 Nginx 作为 反向代理 服务并不陌生。在生产环境中,我们往往需要将程序部署到内网多台服务器上,在一台多核服务器上,为了充分利用所有 CPU 资源,也需要启动多个服务进程,它们分别监听不同的端口。然后使用 Nginx 作为反向代理服务器,接收来自用户浏览器的请求并转发到后端的多台 Web 服务器上。大概工作流程如下图:反向代理
各种语言框架设置反向代理的方式都不一样,nodejs反向代理设置如下:

const http = require("http");
    const url = require("url");

    // 要访问的目标页面
    const targetUrl = "http://httpbin.org/ip";


    const urlParsed = url.parse(targetUrl);

    // 代理服务器
    const proxyHost = "t.16yun.cn";
    const proxyPort = "36600";

    // 生成一个随机 proxy tunnel
    var seed = 1;
    function random() {
        var x = Math.sin(seed++) * 10000;
        return x - Math.floor(x);
    }
    const tunnel = random()*100;

    // 代理验证信息
    const proxyUser = "username";
    const proxyPass = "password";

    const base64    = new Buffer.from(proxyUser + ":" + proxyPass).toString("base64");

    const options = {
        host: proxyHost,
        port: proxyPort,
        path: targetUrl,
        method: "GET",
        headers: {
            "Host": urlParsed.hostname,
            "Proxy-Tunnel": tunnel,
            "Proxy-Authorization" : "Basic " + base64
        }
    };

    http.request(options, function (res) {
        console.log("got response: " + res.statusCode);
        res.pipe(process.stdout);
    }).on("error", function (err) {
        console.log(err);
    }).end();
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值