账号密码登录
微信安全登录
微信扫描二维码登录

登录后绑定QQ、微信即可实现信息互通

手机验证码登录
找回密码返回
邮箱找回 手机找回
注册账号返回
其他登录方式
分享
  • 收藏
    X
    node做代理转发怎么实现在响应服务器挂了之后自行切换代理的服务器
    • 2020-01-01 00:00
    • 10
    37
    0

    问题描述

    node做代理转发怎么实现在响应服务器挂了之后自行切换代理的服务器,不能用该方案外的其他方案,比如Nginx代理,另起服务器监听重启等方案

    问题出现的环境背景及自己尝试过哪些方法

    相关代码

    // 请把代码文本粘贴到下方(请勿用图片代替代码)
    app.js

    let { proxyDo } = require('../middleware/proxy')
    proxyDo(app,hosts) //hosts服务器池

    proxy.js

    const httpProxy  = require('http-proxy');
    let proxyDo = function(app,hosts){
        let proxy = httpProxy.createProxyServer({
            changeOrigin: true,
            ignorePath: true
        });
        app.use((req, res) => {   
            proxy.web(req, res, {
                target:hosts[0]
            })
        })
    
        let cookie = ''
        proxy.on('proxyReq', function (proxyReq, req, res) {
            req.headers.cookie = cookie + req.headers.cookie
            proxyReq._headers = req.headers
            console.log("url:" + proxyReq.path);
            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) {
            console.log('err:'+ proxyReq)
            res.send("<h1>404 Not Found</h1>")
        });
    }
    module.exports = { proxyDo }

    你期待的结果是什么?实际看到的错误信息又是什么?

    期待结果:代理转发的服务器挂了,前台发送请求无法响应或者响应错误的服务器资源,然后node自行更换到另一台配置好的代理服务器,直至没有一台服务器是好的吗,或者其中一台是好的终止
    实际结果:代理服务器的host只能配置一次

    0
    打赏
    收藏
    点击回答
    您的回答被采纳后将获得:提问者悬赏的 10 元积分
        全部回答
    • 0
    • 赠瑰留香 普通会员 1楼
      502 Bad Gateway

      502 Bad Gateway


      nginx
    更多回答
    扫一扫访问手机版
    • 回到顶部
    • 回到顶部