anderen SO question Folgen, haben die neueste I versucht (siehe ligatures.net):Express-JS 4.0-Anwendung mit https auf Openshift Erstellen, einschließlich http Umleitung
self.ipaddress = process.env.OPENSHIFT_NODEJS_IP;
self.port = process.env.OPENSHIFT_NODEJS_PORT || 443;
if (typeof self.ipaddress === "undefined") {
self.ipaddress = "127.0.0.1";
};
...
self.app = express(); // 4.8.7
...
// Trusting Openshift proxy
self.app.enable('trust proxy');
// Http -> Https redirection middleware
self.app.use(function (req, res, next) {
if (!req.secure()) {
var tmp = 'https://' + process.env["DOMAIN_NAME"] + req.originalUrl;
console.log("Redirect to: " + tmp);
res.redirect(tmp);
} else {
next();
}
});
...
// Creating a http server
https.createServer(self.app).listen(self.port, self.ipaddress,
function(err) {
if (err) {
console.log("Node server error: " + err.toString());
} else {
console.log('%s: Node server started on %s:%d ...',
Date(Date.now()), self.ipaddress, self.port);
}
});
In den Openshift-Protokolle, die ich erhalten:
Eigenschaft 'sicheren' von Objekt # ist keine Funktion
Dies ist die Zeile: if (!req.secure()) {
Die Zertifikate werden in die Konsole geladen. Die Anwendung startet erfolgreich an Port 8080.
Warum erhalte ich diese Nachricht und wie soll ich eine gesicherte Express 4.0 https-Anwendung in OpenShift erstellen? Hat jemand Betriebscode zum Teilen? Vielen Dank!
SERVER no redirect: http://undefined/
Protocol: http
Host :
Url :/
und meine Anwendung immer noch nicht:
// Http -> Https redirection middleware
self.app.use(function (req, res, next) {
if (req.headers['x-forwarded-proto'] === 'http') {
var tmp = 'https://' + req.headers.host + req.originalUrl;
console.log("SERVER redirect to: " + tmp);
res.redirect(tmp);
} else {
var pt = req.protocol || "";
var ho = req.headers.host || "";
var ur = req.originalUrl || "";
console.log("\nProtocol: " + pt
+ "\nHost : " + ho
+ "\nUrl : " + ur);
var tmp = req.protocol + '://' + req.headers.host + req.originalUrl;
console.log("SERVER no redirect: " + tmp);
next();
}
ich von der Konsole zu sehen, ein paar der folgenden Möglichkeiten:
UPDATE
Ich habe die Umleitung wie folgt aktualisiert Arbeit. Es sieht für mich wie ein Fehler aus.
Ich habe ein Problem, geöffnet: https://bugzilla.redhat.com/show_bug.cgi?id=1138137
Ich bin auch hinter Cloudflare, die ein Teil des Problems sein kann.
Danke, das die Fehlermeldung entfernt. – JVerstry