Нужен ли nginx, если используется Express

#express #nginx

#экспресс #nginx

Вопрос:

У меня есть веб-приложение NodeJS с Express, работающее на цифровой капле океана.Приложение NodeJS предоставляет внутренние API. У меня есть два интерфейса react, которые используют API с разными доменами. Интерфейсы могут быть размещены на одном сервере, но мой разработчик говорит мне, что я должен использовать другой сервер для размещения интерфейсов, таких как cloudflare. Я читал, что nginX может разрешить размещение нескольких сайтов на одном сервере (т. Е. Размещать мои интерфейсы на одном сервере), но не уверен, что это хорошая практика, поскольку тогда я не смогу использовать cloudflare.

С точки зрения безопасности, может ли кто-нибудь сказать мне, нужен ли мне nginx, и мои варианты, пожалуйста?

Спасибо

Ответ №1:

Это слишком открытый вопрос, но я постараюсь ответить на него:

С точки зрения безопасности, может ли кто-нибудь сказать мне, нужен ли мне nginx, и мои варианты, пожалуйста?

Вам понадобится Nginx (или Apache) в обоих сценариях. С одним или несколькими серверами, использующими Express или нет, Express — это всего лишь платформа приложения для построения маршрутов, но вам все равно нужна служба, которая будет отвечать на сетевые запросы, это то, что делают Nginx и Apache.

Вы могли бы избежать использования Nginx, но тогда вашим пользователям пришлось бы отправлять запрос непосредственно на порт, где вы запустили Express. Например: http://my-site.com:3000/welcome С точки зрения безопасности вам лучше скрыть номер порта и использовать обратный прокси-сервер Nginx, чтобы вашим пользователям нужно было только просматриватьhttp://my-site.com/welcome.

мой разработчик говорит мне, что я должен использовать другой сервер для размещения интерфейсов, таких как cloudflare

На сегодняшний день Cloudflare не предлагает услуги хостинга. Он предлагает CDN для размещения нескольких файлов, но не полного сайта. Для этого вам понадобится другой экземпляр Digital Ocean. В сообщении на форуме Cloudflare я обнаружил: «Cloudflare не является хостом. Основной сервис Cloudflare — это поставщик DNS, где вы просто указываете на свой существующий хост.».

Я читал, что nginX может разрешить размещение нескольких сайтов на одном сервере

Да, Nginx (и Apache тоже) может размещать несколько сайтов с разными именами или с тем же именем, что и домены (www.my-backend.com, www.my-frontend.com ) или поддомены (www.backend.my-site.com, www.my-site.com ) на том же сервере.

… но не уверен, что это хорошая практика

Это определенно неплохая практика, очень часто разделять приложения на разных поддоменах. Несколько веских причин для хранения их на отдельных серверах были бы:

  • Потому что вы хотите, чтобы в случае сбоя интерфейса внутренний API продолжал работать.
  • Потому что вы хотите сбалансировать сетевой трафик.
  • Потому что вы просто хотите, чтобы они были разделены (архитектура микросервисов).

Было бы плохой практикой злоупотреблять этими микросервисами (т. Е. микросервисом для получения значения PI)

Комментарии:

1. Спасибо, но Express действует как сервер, я прослушивал порты.

2. Да, вы можете просто прослушивать порты. Проблема в том, что вы хотите, чтобы ваши пользователи переходили на этот сайт. Вот когда они должны перейти на site.com: 3000 или около того. С другой стороны, если это не проблема, то я думаю, что окончательно нет необходимости настраивать обратный прокси-сервер Nginx.

3. Извините за отсутствие информации ранее, я хочу разместить сервер api (apiSite.com ) который может работать на любом порту, но должен быть защищен SSL и иметь два общедоступных интерфейса (site1.com и site2.com ) также на SSL. В идеале, вариант 1, для размещения 3 сайтов на одном сервере, однако это зависит от сложности. Вариант 2, я мог бы разместить интерфейсы на дешевом статическом хостинг-провайдере. Я хотел знать технически, что включают в себя два варианта.