2016-05-10 2 views
0

私のサブドメイン(cdn.somedomain.com)にhttpsサーバをバインドしようとしました。しかし、https.listen(443、 'cdn.somedomain.com')はホスト名を無視します。彼は、ipとすべてのアドレスをバインドしようとします。https.listenはホスト名を無視します

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');

私はすでにあなたが私のコードで見ることができますどのように、「 - サブドメインを表現」を使用してみました。

私があなたを助けてくれることを願っています。

ニルス

答えて

1

サウンズ(cdn.somedomain.com)をルータに送信します。

これは私の作品
var vhost = require('vhost'); 
... 
app.use(vhost('cdn.somedomain.com', router)); 
+0

:)ありがとう:

は、あなたはそのためのvhostモジュールを使用することができます –

1

それはホスト名を「無視」なぜ聞く機能は、したがって、あなたのホスト名パラメータを取り、IPアドレスに解決されます。

ソース: node.js:: what does hostname do in `listen` function?

は、あなたはそれがすべてのアドレスをバインドしたくないですか?またはあなたのメインドメインを無視しようとしていますか?

異なるドメインを処理するために、ルーターを使用します。

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)); 

これは、右のドキュメントからです:あなたはあなたのサーバーは、特定のホスト名に一致する要求を渡しますvirtual hostingを、したいよう https://github.com/bmullan91/express-subdomain

関連する問題