2016-05-10 8 views
0

Ich habe versucht, den https-Server an meine Subdomain (cdn.somedomain.com) zu binden. Aber https.listen (443, 'cdn.somedomain.com') ignoriert den Hostnamen. Er versucht, die IP und damit alle Adressen zu binden.https.listen ignoriert den Hostnamen

var fs = require('fs'); 
 
var https = require('https'); 
 
var express = require('express'); 
 
var app = express(); 
 
var subdomain = require('express-subdomain'); 
 
var router = express.Router(); 
 
var options = { 
 
    key : fs.readFileSync('/path/to/privkey.pem'), 
 
    cert : fs.readFileSync('/path/to/cert.pem'), 
 
    hostname: 'cdn.somedomain.com' 
 
}; 
 

 
router.use(function(req, res, next) { 
 
    res.header("Access-Control-Allow-Origin", "*"); 
 
    res.header("Access-Control-Allow-Headers", "X-Requested-With"); 
 
    next(); 
 
}); 
 
router.use(express.static('somefiles')); 
 
app.use(subdomain('cdn', router)); 
 

 
https.createServer(options, app).listen(443, 'cdn.somedomain.com');

Ich habe bereits versucht, 'Express-Sub-Domain' zu verwenden, wie Sie in meinem Code zu sehen.

Ich hoffe, Sie können mir helfen.

Nils

Antwort

1

Klingt wie Sie virtual hosting wollen, wo Ihr Server nur Anfragen passieren einen bestimmten Hostnamen steht (cdn.somedomain.com) an den Router.

Sie können das vhost Modul dafür:

var vhost = require('vhost'); 
... 
app.use(vhost('cdn.somedomain.com', router)); 
+0

Dies funktioniert für mich :) Danke –

1

Der hören Funktion Ihrer Hostnamen Parameter nimmt und es zu einer IP-Adresse zu lösen, also warum es die Hostnamen „ignoriert“.

Quelle: node.js:: what does hostname do in `listen` function?

Wollen Sie es nicht alle Adressen binden? Oder versuchen Sie, Ihre Hauptdomain zu ignorieren?

Verwenden Sie Ihre Router die verschiedenen Domänen zu handhaben:

var v1Routes = express.Router(); 
var v2Routes = express.Router(); 

v1Routes.get('/', function(req, res) { 
    res.send('API - version 1'); 
}); 
v2Routes.get('/', function(req, res) { 
    res.send('API - version 2'); 
}); 

router.use(subdomain('*.v1', v1Routes)); 
router.use(subdomain('*.v2', v2Routes)); 

Dies ist direkt aus der Dokumentation: https://github.com/bmullan91/express-subdomain