Зачем нам нужен apache под Node.js Express Web Framework? - PullRequest
8 голосов
/ 15 февраля 2012

Я собираюсь развернуть свое приложение node.js.

Я могу запустить свое собственное веб-приложение только с исключительно node.js.

Но мой fd сказал мне, что лучшеобслуживать это веб-приложение под apache или nginx.

У кого-то есть такой опыт, зачем нам нужен apache, поскольку я могу запустить свое веб-приложение только на node.js + express?

Я хотел быузнать больше о знаниях развертывания.Спасибо за любую помощь.

Комплект

Ответы [ 4 ]

9 голосов
/ 15 февраля 2012

Размещение Apache перед Node не типично для новых приложений. Единственный случай, на который я могу согласиться, - это если у вашей компании уже есть инвестиции в инфраструктуру на основе Apache (мониторинг / безопасность / маршрутизация / кэширование и т. Д.) На внешнем интерфейсе, и системный администратор настаивает на этой настройке.

Некоторые люди предпочитают использовать nginx или haproxy для управления правилами маршрутизации, чтобы они могли направлять запросы на статические файлы (ресурсы) от Node.js (node.js не всегда выполнялся при обработке статических файлов), или сделать причудливую балансировку нагрузки или аварийное переключение. В первые дни 0.2.x и т. Д. Даже Райан Даль выступал за то, чтобы запускать что-то перед Node.js главным образом для безопасности; хотя, я не думаю, что какие-либо существенные проблемы были обнаружены. Я лично запускаю nginx перед Node.js, так как у нас есть несколько сайтов и сервисов, которые обращаются к общему IP-адресу внешнего интерфейса, который мы перенаправляем обратно к различным экземплярам узлов, прослушивающим разные внутренние порты.

Nginx лучше подходит, чем Apache, так как он легкий и однопоточный против потока Apache на запрос (в большинстве обычных установок). Но в настоящее время есть даже надежный (исключая node-http-proxy) внешний прокси-сервер Node.JS http://www.github.com/substack/bouncy, который один из разработчиков знаменитости node.js использует / will-use для внешнего интерфейса своего PaaS.

3 голосов
/ 15 февраля 2012

Прежде всего, да, используйте nginx, а не Apache - гораздо проще настроить nginx, он легче и эффективнее.

С помощью прокси-сервера nginx вы получаете несколько преимуществ:

  • Возможность запуска нескольких бэкэндов для разных частей вашего сайта
  • Более быстрый статический файловый сервер
  • Чистый перезапуск, если вам нужно отключить ваш Node-сервер (nginx может доставить симпатичную страницу «на обслуживании»)
  • Вход в приложение вашего узла может быть сосредоточен на отладке, а nginx может регистрировать запросы - поддерживает его в чистоте и чистоте

И, вероятно, другие вещи, которые я пропустил.

Однажды действительно хорошая вещь, которую может сделать nginx, - это директива try_files, которая сначала ищет локальные файлы, а если не находит их, передается бэкенду Node.

1 голос
/ 15 февраля 2012

Вы не хотите использовать Apache, потому что Nginx лучше подходит, поскольку Nginx создан для асинхронного ввода-вывода.Вы хотите использовать Nginx в качестве прямого прокси-сервиса, который будет направлять ваших клиентов на реальные веб-серверы node.js.Это позволяет горизонтальное масштабирование по мере роста вашего приложения, чтобы справиться с повышенной нагрузкой.Поэтому, если вы переросли свой первый сервер Nginx, вы можете установить еще один и другой ... Вы также сможете сделать то же самое с вашими веб-серверами Node.js.

клиентский веб-браузер <->Nginx <-> Express app.js

Вы также сможете быстрее обслуживать статический контент, если будете работать с nginx, а затем использовать Express для динамического контента.Для развертывания вам может потребоваться написать сценарий sh, который просто скопирует и запустит ваш сервер Express, как обычно, и запустит ваш сервер Nginx, как обычно, но с настройкой прокси-сервера пересылки.Вы можете использовать скрипт в Nginx следующим образом:

upstream your_domain_app {
    server 127.0.0.1:8000;
}

server {
    listen 0.0.0.0:80;
    server_name your_domain.com your_domain;
    access_log /var/log/nginx/your_domain.log;

    location / {
      proxy_set_header X-Real-IP $remote_addr;
      proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
      proxy_set_header Host $http_host;
      proxy_set_header X-NginX-Proxy true;

      proxy_pass http://your_domain_app/;
      proxy_redirect off;
    }
 }
0 голосов
/ 08 августа 2017

Причины использования веб-сервера, такого как apache, или в большинстве случаев nginx:

  1. Балансировка нагрузки - очень распространенная практика - использовать веб-сервер перед сервером приложений / веб-сервера для балансировки нагрузки.
  2. Кэширование - веб-сервер, такой как nginx, обеспечивает широкие возможности кэширования по сравнению с таковыми для nodejs или других подобных серверов приложений.
  3. Обработка запросов - Чистый веб-сервер, такой как nginx, намного превосходит по обработке несколько запросов одновременно.т.е. высокий параллелизм.

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

Также для обслуживания статическихфайлы, использующие веб-серверы, очень часто используются вместо nodejs по указанным выше причинам.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...