Ich habe ein Projekt, wo ich zwei Websites mit zwei Domains hosten muss, die auf den gleichen Server (1 statische IP) mit einem EJpressJS Server zeigen. Während meiner Forschung fand ich, dass Express mit Vhosts erweitert werden kann. Aber ich konnte nicht herausfinden, wie man sie mit https benutzt. Mein Wunsch ist es, zu verschiedene Express-Objekte zu haben, so dass ich auf 'foo.com'-Anfragen über appFoo.get() und' bar.com'-Anfragen über appBar.get() oder deren POST- oder JSON-Äquivalent zugreifen kann. Ich möchte keinen Proxy in Apache, Nginx oder Knoten selbst verwenden. Und ich möchte sie beide auf Port 80/443 laufen lassen.ExpressJS Multi Domain https hosting
0
A
Antwort
0
// Includes
var https = require('https');
var express = require('express');
var tls = require('tls');
var vhost = require('vhost');
var fs = require('fs');
// Express objects
var appFoo = express();
var appBar = express();
// SSL Constants
const siteFoo = {
app: appFoo,
context: tls.createSecureContext({
key: fs.readFileSync(__dirname + '/tls/foo.com/privkey.pem').toString(),
cert: fs.readFileSync(__dirname + '/tls/foo.com/fullchain.pem').toString(),
ca: fs.readFileSync(__dirname + '/tls/foo.com/chain.pem').toString()
}).context
};
const siteBar = {
app: appBar,
context: tls.createSecureContext({
key: fs.readFileSync(__dirname + '/tls/bar.com/privkey.pem').toString(),
cert: fs.readFileSync(__dirname + '/tls/bar.com/fullchain.pem').toString(),
ca: fs.readFileSync(__dirname + '/tls/bar.com/chain.pem').toString()
}).context
};
// Sites
var sites = {
'www.foo.com': siteFoo,
'foo.com': siteFoo,
'www.bar.com': siteBar,
'bar.com': siteBar
}
// Setup vhosts
var exp = express();
for (var s in sites) {
console.log("add app for " + s);
exp.use(vhost(s, sites[s].app));
}
// Redirect from http port to https
var http = require('http');
http.createServer(function (req, res) {
res.writeHead(301, { "Location": "https://" + req.headers['host'] + req.url });
console.log(req.headers['host']);
console.log(req.url);
res.end();
}).listen(80);
// HTTPS Server
var secureOpts = {
SNICallback: function (domain, cb) {
if (typeof sites[domain] === "undefined") {
cb(new Error("domain not found"), null);
console.log("Error: domain not found: " + domain);
} else {
cb(null, sites[domain].context);
}
},
key: fs.readFileSync(__dirname + '/tls/qarm.de/foo.com/privkey.pem').toString(),
cert: fs.readFileSync(__dirname + '/tls/qarm.de/foo.com/fullchain.pem').toString(),
ca: fs.readFileSync(__dirname + '/tls/qarm.de/foo.com/chain.pem').toString()
};
var https = require('https');
var httpsServer = https.createServer(secureOpts, exp);
httpsServer.listen(443, function() {
console.log("Listening https on port: " + + this.address().port);
});
appFoo.get('/', function(req,res) {
res.send('Foo.com');
}
appBar.get('/', function(req,res) {
res.send('bar.com');
}
Dieser Code erstellt zwei getrennte vHost von neuen Express-Objekte initialisiert TLS, DIRECTES Anfragen an das richtige Objekt und leitet den gesamten Datenverkehr von HTTP (Port 80) auf HTTPS (443)
Verwandte Themen
- 1. https hosting auf der Stammdomäne
- 2. Hosting HTTPS-Server in OSGi
- 3. .htaccess Multi-Domain mit
- 4. Magento - Multi-Domain & Filter
- 5. expressJS 4.x + vhost + SSL/HTTPS
- 6. .htaccess Umleitung Domain https, Sub-Domain https und nicht-www www
- 7. Wie Root-Domain umleiten mit https
- 8. https Zertifikat Problem mit Sub-Domain
- 9. Multi-Sub-Domain Cookies und Ajax Probleme
- 10. Hosting-Website auf AWS aber Domain von Google gekauft?
- 11. Sofort registrieren und Domain für Hosting für .NET übertragen
- 12. Wie wird eine Domain in ein anderes existierendes Domain-Hosting gelenkt?
- 13. Disconnected Domain von Blogger und Firebase Hosting zeigt immer noch "Domain bereits in Verwendung"
- 14. wie www vom Domain-Namen entfernen und https erzwingen?
- 15. Tomcat Manager sind nicht zugänglich in Multi-Domain-Konfiguration
- 16. Erzwinge SSL mit expressjs 3
- 17. Wie haben HTTPS auf Github Seite mit benutzerdefinierten Domain
- 18. Best Practice: 301 HTTP zu HTTPS (Standard Domain) umleiten
- 19. https Sub-Domain nicht korrekt mit .htaccess Umleitung
- 20. Wordpress Multisite Force HTTPS und WWW für Domain und nur HTTPS für Subdomains HTACESS
- 21. Typo3 Multi-Domain: Ändern 1 der Domänen zu Wordpress
- 22. Multi-Domain-Schienen-App. Wie kann MVC intelligent genutzt werden?
- 23. Wie funktioniert 'go get', wenn eine nicht bekannte Code-Hosting-Domain aufgerufen wird?
- 24. URL Neuschreiben mit ExpressJS
- 25. DNS und Domain Pointing
- 26. Wordpress Hosting auf Microsoft Azure
- 27. ExpressJS vs MeteorJS
- 28. ExpressJs mit Sequelize
- 29. ExpressJS statische Dateien
- 30. Expressjs Passwort Feld Validierung