2015-12-28 18 views
7

Mi chiedo come posso gestire i sottodomini nel mio progetto basati su Expressjs.Gestisci sottodominio Express con nginx

Ecco il mio nginx configurazione

server { 
    listen 80; 
    server_name   bee.local; 

    access_log   /var/log/nginx/bee.local.access.log; 
    error_log    /var/log/nginx/bee.local.error.log; 

    location/{ 
    proxy_pass http://127.0.0.1:3000; 
    proxy_http_version 1.1; 
    proxy_set_header Upgrade $http_upgrade; 
    proxy_set_header Connection 'upgrade'; 
    proxy_set_header X-Forwarded-For $remote_addr; 
    } 
} 

server { 
    listen 80; 
    server_name   api.bee.local; 

    access_log   /var/log/nginx/bee.local.access.log; 
    error_log    /var/log/nginx/bee.local.error.log; 

    location/{ 
    proxy_pass http://127.0.0.1:3000; 
    proxy_http_version 1.1; 
    proxy_set_header Upgrade $http_upgrade; 
    proxy_set_header Connection 'upgrade'; 
    proxy_set_header X-Forwarded-For $remote_addr; 
    } 
} 

ed ecco il mio router con supporto sottodominio

router.get('/v1/', function(req, res, next) { 
    res.status(200).json({ title: "title" }); 
}); 



app.use(subdomain('api', router)); 

Il problema è che è rendere il percorso dell'indice

e di sicuro i SetupEd il file hosts

I 'Ho cercato per 3 ore mi può aiutare :)

risposta

10

Ci sono diversi requisiti:

  1. installazione Host intestazione in nginx con il dominio o un proxy necessario se del caso
  2. Usa sottodominio middleware prima di altri middleware che gestiscono gli endpoint

lavoro Esempio:

configurazione nginx:

server { 
    listen  80; 
    server_name bee.local; 

    location/{ 
     proxy_pass http://127.0.0.1:3000; 
     proxy_http_version 1.1; 
     proxy_set_header Host  $host; 
     proxy_set_header X-Real-IP $remote_addr; 
    } 
} 

server { 
    listen  80; 
    server_name api.bee.local; 

    location/{ 
     proxy_pass http://127.0.0.1:3000; 
     proxy_http_version 1.1; 
     proxy_set_header Host  $host; 
     proxy_set_header X-Real-IP $remote_addr; 
    } 
} 

configurazione nginx con i valori di intestazione hardcoded ospitanti:

credo che non hai fatto intestazione Host configurato correttamente. Si prega di provare la prossima configurazione

server { 
    listen  80; 
    server_name bee.local; 

    location/{ 
     proxy_pass http://127.0.0.1:3000; 
     proxy_http_version 1.1; 
#  proxy_set_header Host  $host; 
     proxy_set_header Host  bee.local; 
    } 
} 

server { 
    listen  80; 
    server_name api.bee.local; 

    location/{ 
     proxy_pass http://127.0.0.1:3000; 
     proxy_http_version 1.1; 
#  proxy_set_header Host  $host; 
     proxy_set_header Host  api.bee.local; 
    } 
} 

app espresso:

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

var router = express.Router(); 

router.get('/', function(req, res) { 
    res.send('Welcome to our API!'); 
}); 

router.get('/users', function(req, res) { 
    res.json([ 
    { name: "Brian" } 
    ]); 
}); 

app.use(subdomain('api', router)); 

app.get('/', function(req, res) { 
    res.send('Homepage'); 
}); 

app.listen(3000); 
+0

http: //api.bee.local/ sta rendendo il percorso casa – dyaa

+0

hai provato il mio esempio come è? si raggiungono/e/utenti dal sottodominio router per http: //api.bee.local e raggiungeranno/dal router principale per http: //bee.local –

+0

SI lo stesso esempio – dyaa

Problemi correlati