gpt4 book ai didi

node.js - 按主机名进行条件端口转发

转载 作者:太空宇宙 更新时间:2023-11-04 02:27:22 26 4
gpt4 key购买 nike

我是 node-http-proxy 的新手模块。

我的目标

我需要使用为多子域提供多 SSL 的模块。例如;如果用户调用process.localhost:1443那么我应该将调用路由至 process.localhost:2443和如果用户调用api.localhost:1443那么我应该将调用路由至 api.localhost:3443

发生了什么

我编写了以下 server.js 代码。但是,当我尝试调用process.localhost:1443时我收到以下错误;
D:\Work Space\...\http-proxy\node_modules\requires-port\index.js:13 protocol = protocol.split(':')[0]; TypeError: Cannot call method 'split' of undefined

protocol看起来像 undefined

function required(port, protocol) {
protocol = protocol.split(':')[0];

我该怎么办?

server.js

var fs = require('fs'),
httpProxy = require('http-proxy'),
express = require('express'),
app = require('./app').service,
api = require('./api').service;

// PROXY
var options = {
changeOrigin: true,
forward: {
'process.localhost': 'process.localhost:2443',
'api.localhost' : 'api.localhost:3443'
}
}

httpProxy.createServer(options).listen(1443, function() {
console.log('Proxy is listening on port 1443')
})


// HTTP
app
.listen(2443, function() {
console.log('PROCESS APP server is listening on port 2443')
})

api
.listen(3443, function() {
console.log('API APP server is listening on port 3443')
})

最佳答案

我可以通过 node-http-proxy 论坛的某人解决这个问题。

var proxyTable = {}
proxyTable['api.localhost:1443'] = 'http://127.0.0.1:3443'
proxyTable['process.localhost:1443'] = 'http://127.0.0.1:2443'

var proxy = httpProxy.createServer({changeOrigin: true})

var http = require('http')
http.createServer(function(req, res) {

var options = {
target: proxyTable[req.headers.host]
}

proxy.web(req, res, options)

}).listen(1443, function() {
console.log('Proxy server is listening on port 1443')
})

app.listen(2443, function() {
console.log('APP server is listening on port 2443')
})

api.listen(3443, function() {
console.log('API server is listening on port 3443')
})

关于node.js - 按主机名进行条件端口转发,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/29473231/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com