我们一直在使用Bouncy将传入的HTTP请求路由到不同的端点,并且效果很好。现在,我将所有域移至https,无法进行弹性工作。
下面是三个测试,前两个有效,最后一个无效
这有效:
const http = require('http');
const fs = require('fs');
const connect = require("connect");
const bouncy = require("bouncy");
var express = require('express');
var app = express();
const somedomain = Server("/var/www/somedomain", 8010);
bouncy(bouncer).listen(80);
function bouncer(req, bounce) {
console.error("bouncer")
switch (req.headers.host) {
case "somedomain.com":
console.log("bounce", req.headers.host);
bounce(8010);
break;
default:
bounce(8000);
console.log(`Unknown host: ${req.headers.host}`);
}
}
function Server(base_path, port) {
const app = connect();
app.use(function(req, res) {
res.end('Hello from Connect!\n');
});
http.createServer(app).listen(port);
return app
}
这不起作用:
const http = require('http');
const https = require('https');
const fs = require('fs');
const connect = require("connect");
const bouncy = require("bouncy");
const somedomain = Server("/var/www/somedomain", 8010);
bouncy(bouncer).listen(443);
function bouncer(req, bounce) {
console.error("bouncer")
switch (req.headers.host) {
case "somedomain.com":
console.log("bounce", req.headers.host);
bounce(8010);
break;
default:
bounce(8000);
console.log(`Unknown host: ${req.headers.host}`);
}
}
function Server(base_path, port) {
const app_secure = connect();
const options = {
key: fs.readFileSync('/etc/letsencrypt/live/somedomain.com/privkey.pem'),
cert: fs.readFileSync('/etc/letsencrypt/live/somedomain.com/fullchain.pem')
};
app_secure.use(function(req, res) {
res.end('Hello from Connect!\n');
});
https.createServer(options, app_secure).listen(port);
return app_secure
}
但是没有弹性的相同代码有效:
const http = require('http');
const https = require('https');
const fs = require('fs');
const connect = require("connect");
const options = {
key: fs.readFileSync('/etc/letsencrypt/live/somedomain.com/privkey.pem'),
cert: fs.readFileSync('/etc/letsencrypt/live/somedomain.com/fullchain.pem')
};
const app_secure = connect();
app_secure.use(function(req, res) {
res.end('Hello from Connect!\n');
});
https.createServer(options, app_secure).listen(443);
在以上任何示例中我都没有收到任何错误消息。在端口443上有弹性的情况下,不会记录console.error,因此保镖功能似乎未运行。浏览器消息是服务器意外关闭了连接。