2015-05-15 6 views
2

У меня есть два узла js-приложений. Я запускаюсь в одном и том же поле, и я хотел бы, чтобы он запускал приложение js первого узла для всей маршрутизации, за исключением того, что URL-адрес www.domain. com/blog, чтобы перейти к другому приложению js узла. Возможно ли это с этой настройкой или мне нужно настроить субдомены и использовать nginx или что-то еще?Хостинг двух приложений Node.JS в одном домене

+0

Да, это очень возможно с использованием обратного прокси. –

ответ

2

Вы можете достичь этого, используя nginx в качестве обратного прокси.

Предполагая, что у вас есть процесс узла вашего блога, запущенный на порту 3000, а другой узел - процесс на 3001, будет выглядеть простая конфигурация;

upstream blog { 
    server 127.0.0.1:3000; 
} 


upstream other { 
    server 127.0.0.1:3001; 
} 


server { 
    listen 80; 
    server_name www.domain.com; 

    location /blog { 
     proxy_pass   http://blog; 
     proxy_http_version 1.1; 
     proxy_set_header Host    $http_host; 
     proxy_set_header Upgrade    $http_upgrade; 
     proxy_set_header Connection   "Upgrade"; 
     proxy_set_header X-Real-IP   $proxy_protocol_addr; 
     proxy_set_header X-Forwarded-For  $proxy_add_x_forwarded_for; 
     proxy_set_header X-Forwarded-Proto tcp; 
     proxy_set_header X-NginX-Proxy  true; 
    } 

    location/{ 
     proxy_pass   http://other; 
     proxy_http_version 1.1; 
     proxy_set_header Host    $http_host; 
     proxy_set_header Upgrade    $http_upgrade; 
     proxy_set_header Connection   "Upgrade"; 
     proxy_set_header X-Real-IP   $proxy_protocol_addr; 
     proxy_set_header X-Forwarded-For  $proxy_add_x_forwarded_for; 
     proxy_set_header X-Forwarded-Proto tcp; 
     proxy_set_header X-NginX-Proxy  true; 
    } 
    } 
+0

Когда я пытаюсь это сделать, мой главный узел работает отлично, однако мой другой показывает некоторые обещания, но не совсем там. Когда я иду в/блог, я получаю «404 Страница не найдена Перейти на первую страницу →« Затем, когда я нажимаю «Перейдите на главную страницу, он отправит меня прямо на локальный хост: 3000». Так ясно, что есть какая-то связь. Одно предостережение: я удалял default_server proxy_protocol из строки прослушивания, потому что когда он там был, он был сломан, это связано? Также обратите внимание, что я в значительной степени скопировал и вложил то, что вы положили там дословно, и бросил его в файл nginx conf. – user1200387

+0

Убедитесь, что ваши серверы узлов настроены так, чтобы они обслуживали все, как если бы они запускались от root, потому что с точки зрения узла узла это корень. Однако ссылки в html должны основываться на внешнем URL-адресе, поэтому из/blog. –

+0

Глядя на журналы, когда я нахожусь в конечной точке/blogs, вот что я получаю: Blog App Log: GET/blog 301 0.571 ms - - GET/blog/404 9.134 ms - - Обычный журнал приложений: GET/ghost/css/ghost.min.css? v = 9b05545ca1 200 2ms GET /ghost/img/[email protected]?v=9b05545ca1 200 2ms. Должны ли оба сервера ударяться по этому запросу? – user1200387

 Смежные вопросы

  • Нет связанных вопросов^_^