Niezależne od proxy aplikacje Node Express za pośrednictwem Nginx.
Dzięki temu nowe aplikacje mogą być łatwo montowane, a także mogę uruchamiać inne rzeczy na tym samym serwerze w różnych lokalizacjach.
Oto więcej szczegółów na temat mojej konfiguracji z przykładem konfiguracji Nginx:
Wdróż wiele aplikacji Node na jednym serwerze WWW w podfolderach za pomocą Nginx
W przypadku węzła sprawy stają się trudne, gdy trzeba przenieść aplikację z hosta lokalnego do Internetu.
Nie ma wspólnego podejścia do wdrażania węzła.
Google może znaleźć mnóstwo artykułów na ten temat, ale starałem się znaleźć odpowiednie rozwiązanie dla potrzebnej konfiguracji.
Zasadniczo mam serwer sieciowy i chcę, aby aplikacje węzłów były montowane w podfolderach (tj. Http: // myhost / demo / pet-project / ) bez wprowadzania zależności konfiguracji od kodu aplikacji.
Jednocześnie chcę, aby inne rzeczy, takie jak blog, działały na tym samym serwerze internetowym.
Brzmi prosto, prawda? Najwyraźniej nie.
W wielu przykładach w Internecie aplikacje węzłów albo działają na porcie 80, albo są pośredniczone przez Nginx w katalogu głównym.
Mimo że oba podejścia są właściwe dla niektórych przypadków użycia, nie spełniają moich prostych, ale nieco egzotycznych kryteriów.
Dlatego stworzyłem własną konfigurację Nginx i oto fragment:
upstream pet_project {
server localhost:3000;
}
server {
listen 80;
listen [::]:80;
server_name frontend;
location /demo/pet-project {
alias /opt/demo/pet-project/public/;
try_files $uri $uri/ @pet-project;
}
location @pet-project {
rewrite /demo/pet-project(.*) $1 break;
proxy_set_header X-Real-IP $remote_addr;
proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
proxy_set_header Host $proxy_host;
proxy_set_header X-NginX-Proxy true;
proxy_pass http://pet_project;
proxy_redirect http://pet_project/ /demo/pet-project/;
}
}
Z tego przykładu można zauważyć, że podłączam moją aplikację Pet Project Node działającą na porcie 3000 do http: // myhost / demo / pet-project .
Najpierw Nginx sprawdza, czy żądany zasób jest plikiem statycznym dostępnym w / opt / demo / pet-project / public /, a jeśli tak, to obsługuje go, ponieważ jest bardzo wydajny, więc nie musimy mieć zbędnej warstwy, takiej jak Connect statyczne oprogramowanie pośrednie.
Następnie wszystkie pozostałe żądania są nadpisywane i zastępowane aplikacją Pet Project Node , więc aplikacja Node nie musi wiedzieć, gdzie jest faktycznie zamontowana, a zatem może zostać przeniesiona w dowolne miejsce poprzez konfigurację.
proxy_redirect jest konieczny do prawidłowego obsługi nagłówka Location. Jest to niezwykle ważne, jeśli używasz res.redirect () w aplikacji Node.
Możesz łatwo powielić tę konfigurację dla wielu aplikacji Węzłów działających na różnych portach i dodać więcej programów do obsługi lokalizacji do innych celów.