Używam jednego serwera do obsługi wielu aplikacji sieciowych Node.js, które są rozproszone w wielu domenach. Moja obecna praktyka polega na uruchomieniu serwera Express dla każdej aplikacji na innym porcie i uruchomieniu serwera bazowego, który po prostu kieruje (przekierowuje) żądania do właściwego portu/serwera Express. To działa, ale oznacza to, że mój serwer bazowy routuje każde pojedyncze żądanie HTTP (i ręcznie przekierowuje je) oraz że moi użytkownicy widzą moje aplikacje jako hostowane pod adresem [hostname.com]: 8000.Jak powinienem organizować wiele serwerów Express w tym samym systemie?
Po kilku badaniach odkryłem, że mogę korzystać z http-proxy dla potrzeb routingu, ale nadal chciałbym wiedzieć, czy istnieje najlepsza praktyka do uruchamiania wielu serwerów Express w tym samym systemie. Oto, jak zamierzam to zrobić:
Każda aplikacja internetowa będzie miała swój własny folder z pełną strukturą folderu Express (app.js, trasy, widoki itp.). Aplikacje będą pogrupowane według domen, więc struktura folderów przykładem będzie:
hostname.com/
app.js
routes/
views/
...
app1/
app1.js
routes/
views/
...
app2
...
hostname2.com/
app.js
routes/
views/
...
będę musiał uruchomić każdy app.js osobno z węzła (lub z forever, który obecnie używam), a każdy z nich będzie musiał użyć innego portu wewnętrznie , przy czym przekierowania między aplikacjami są wskazywane na port docelowej aplikacji.
To mój obecny plan. Jakie są z tym problemy i jakich pułapek powinienem unikać? Co najważniejsze, jest ustalonym rozwiązaniem tego problemu - problemem hostowania wielu aplikacji internetowych w tym samym systemie za pomocą Node.js/Express?
EDYCJA: Mam zamiar ostatecznie korzystać z WebSockets i HTTPS, a ilość przepustowości, którą moja konfiguracja może obsłużyć, ma dla mnie niewielkie znaczenie - jest to serwer programistyczny (przynajmniej na razie). Podziękowania dla Davida Ellisa za poruszenie kwestii WebSockets.
DRUGA EDYCJA: Podziękowania dla EhevuTova i Davida Ellisa za odpowiedzi, które bardzo pomogły. Nadal decyduję się na ogólną strukturę dla mojej aplikacji i wygląda na to, że pytanie to jest szczegółowo omówione przez: this StackOverflow question
TRZECIA EDYCJA: Od czasu opublikowania tego pytania przeszedłem kilka sposobów (choć mam znacznie więcej do udać się). Sprawdź numer this file in my GitHub repository, który wykorzystuje to, czego dowiedziałem się z odpowiedzi na to pytanie!
Dzięki za komentarz. Zacząłem używać vhost (z pomocą kilku użytecznych użytkowników IRC w #express) i działa to jak czar. Dziękuję także za możliwość przeniesienia się do Node.Cluster. – Aaron
@aaron Proszę bardzo. Do zobaczenia na IRC, może – EhevuTov
@Aaron Czy masz jakiś kod, który możesz udostępnić, aby pokazać nam, jak to robisz? – Matt