Архитектура изоморфного рендеринга Node и React

Итак, я понимаю основы изоморфного рендеринга с помощью React/Node, но не понимаю, как мне вписать Apache или NGINX в мою среду.

Как правило, со страницей на стороне клиента я бы просто обслуживал статический контент из Apache или NGINX, а страница на стороне клиента выполняла бы вызовы AJAX (которые пересылаются через Apache или NGINX) в Node. Node будет обслуживать данные, и страница изменится соответствующим образом.

Глядя на изоморфную страницу с React, страница изначально отображается на сервере Node, а изменения передаются клиенту с сервера. Могу ли я по-прежнему использовать Apache или NGINX для балансировки нагрузки и обратного прокси-сервера для моих запросов?

Например, у меня будет один экземпляр Node, обслуживающий мой API, и один экземпляр Node для рендеринга React и его обслуживания клиенту. В этом примере, могу ли я сбалансировать нагрузку, использовать обратное прокси для своих вызовов и обслуживать свои пакеты .js и .css из Apache/NGINX? В этом примере пользователь получит доступ к www.example.com/, который сначала перейдет к Apache/NGINX, который перевернет прокси-вызов на сервер Node, который отобразит страницу и предоставит ее клиенту. Затем на странице клиент нажмет какую-нибудь кнопку и получит доступ к www.example.com/api/test, а также перейдет к Apache/NGINX и обратному прокси-серверу ко второму экземпляру Node, который будет передавать данные обратно клиенту. . Или следует нажать эту кнопку, чтобы вернуться к первому экземпляру Node (где происходит рендеринг), и этот экземпляр Node вызывает второй экземпляр Node, чтобы получить данные, визуализировать новую часть и вернуть ее клиенту?

По сути, я хочу изоморфное приложение со всеми преимуществами использования Apache или NGINX перед моими серверами Node. Это возможно и / или лучшая практика? Если нет, то каков идеальный ландшафт для изоморфного приложения, чтобы я мог по-прежнему поддерживать все преимущества Apache или NGINX в качестве точки входа в свое веб-приложение?


person Sir Jeffers    schedule 13.11.2015    source источник


Ответы (1)


Да, все должно работать нормально. Сервер React/Node просто отображает html и поддерживает обратный прокси-сервер, как и любой другой бэкэнд html.

И да, использование обратного прокси/балансировщика нагрузки перед вашими серверами — отличная идея, если вы планируете запускать что-то в масштабе.

person Mike Lambert    schedule 13.11.2015
comment
Это замечательные новости! Спасибо вам за быстрый ответ. Однако у меня есть дополнительный вопрос: все ли мои статические ресурсы (js, css, изображения) хранятся на Apache/NGINX или они хранятся и обслуживаются через сервер Node? - person Sir Jeffers; 13.11.2015
comment
Очевидно, что любой из них работает, я бы сказал, что это зависит от того, где вы хотите стоять на простоте развертывания по сравнению с спектром максимальной производительности. Я лично выбрал бы то, что проще всего, а затем начал бы сосредотачиваться на масштабе/скорости/и т. д., поскольку мне нужно добавить машины и/или иметь дело с низкой задержкой (т.е. без преждевременной оптимизации). - person Mike Lambert; 14.11.2015