2015-12-28 9 views
7

Zastanawiam się, jak poradzić sobie z subdomenami w moim projekcie opartym na Expressjach.Uchwyt Express Subdomain z nginxem

Oto mój nginx konfiguracja

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

i oto mój router z obsługą subdomeny

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



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

Problemem jest to, że renderowanie trasę indeksu

a na pewno ja setuped plik hosts

I Już zostały poszukiwania przez 3 godziny możesz mi pomóc :)

Odpowiedz

10

Istnieje kilka wymagań:

  1. konfiguracji Host nagłówek w nginx z wymaganą domenę lub serwer proxy jeżeli dotyczy
  2. Zastosowanie subdomeny middleware przed innymi middleware, które obsługują punkty końcowe

Work Przykład:

konfiguracji 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; 
    } 
} 

konfiguracji nginx z wartości nagłówka ustalony host:

wierzę, że nie konfiguracji nagłówka Host poprawnie. spróbuj obok konfiguracja

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

express aplikacja:

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/ jest świadczenie drogę do domu – dyaa

+0

nie spróbować mój przykład, jak jest? dotrzesz do/i/użytkowników z poddomeny routera dla http: //api.bee.local i dojdzie do/z głównego routera dla http: //bee.local –

+0

TAK ten sam przykład – dyaa