2017-05-17 4 views
1

私はサブドメインが使われているエクスプレスプロジェクトに取り組んでいます。ノードエクスプレス:要求はサブドメインとしてトップレベルドメインを取っていますか?

私が直面している問題は、私のドメイン名が( "companyName.co.in")であり、私のノードのJSコードがcompanyNameをサブドメインとして考えていることです。

ここに私のコードです:だから

server.js

var express = require('express'); 
var app = express(); 

var subdomain = require('express-subdomain'); 

var bodyParser = require('body-parser'); 
var path = require('path'); 
var expressValidator = require('express-validator'); 
var expressJwt = require('express-jwt'); 
var jwt = require('jsonwebtoken'); 

var cors = require('cors'); 

app.use(bodyParser.json({limit: '50mb'})); 
app.use(bodyParser.urlencoded({ limit: '50mb', extended: true })); 
app.use(cors()); 
//app.use(cookieParser()); 
app.use(express.static('../app')); 
app.use(express.static('static/')); 

app.use('/api/user',require('./controllers/user.controller')); 


var server = app.listen(3000,function(){  
    console.log('Server listening at 3000'); 
}); 

user.controller.js

var express = require('express'); 
var router = express.Router(); 

router.get("/details", getUserDetails); 

function getUserDetails(req, res) { 
    var subdomain = (req.subdomains.length > 0) ? req.subdomains[0] : ''; 
    console.log(subdomain) 
} 

module.exports = router; 

私は、API /ユーザー/詳細を呼び出すときに私がそれがサブドメインとしてcompanyNameを与えることがわかります。

like: "companyName.co.in"からの依頼 サブドメインはnullにする必要がありますが、サブドメインはcompanyNameとして表示されます。

ノードサーバーに「companyName.co.in」がホストであることを知らせる方法を教えてください。また、「* .companyName.co.in」にはサブドメインが何でもかまいません。

+0

これは非常に簡単に設定し、他の多くの利点を持っていることができますあなたのノードアプリケーションの複雑さを取り除くことに加えて。 – Robert

答えて

1

「サブドメインオフセット」の明示的な設定をに設定することで、これを解決できます。など、あなたのサブドメインを扱うあなたは(nginxので例えば)リバースプロキシを使用して直接のNode.jsでの配信が移動することを検討すべきである

http://expressjs.com/en/4x/api.html#app.settings.table

var express = require('express'); 
var app = express(); 
app.set('subdomain offset', 3); 
+0

ありがとうございました。これは確かに助けられ、リンクは多くの必要な情報を提供しました。 –

関連する問題