Ответы:
Есть несколько веских причин для размещения другого веб-сервера перед Node.js:
Я хочу напомнить второй пункт, сказав, что вы, вероятно, должны обслуживать свои статические файлы через CDN или из-за сервера кэширования, такого как Varnish. Если вы делаете это, на самом деле не имеет значения, является ли источник Node, Nginx или Apache.
Будьте осторожны с nginx: если вы используете веб-сокеты, обязательно используйте последнюю версию nginx (> = 1.3.13), так как она только добавила поддержку обновления соединения для использования веб-сокетов.
:80без запуска узла как root, просто используя authbind: thomashunter.name/blog/using-authbind-with-node-js
Просто чтобы добавить еще одну причину к ответу pauljz, я использую сервер переднего плана, чтобы он мог обслуживать 502 страницы ошибок при перезапуске внутреннего сервера или по какой-то причине зависает. Это позволяет вашим пользователям никогда не получать ошибку о невозможности установить соединение.
Я считаю, что использовать Node для обслуживания статических файлов можно при любых обстоятельствах, если вы знаете, что делаете . Безусловно, это новая парадигма использования сервера приложений для обслуживания статических файлов, так как многие (каждая?) Конкурирующие технологии (PHP, Ruby, Python и т. Д.) Требуют наличия веб-сервера, такого как HTTPD или Nginx, перед серверами приложений. ,
Любая объективная причина, по которой я когда-либо сталкивался с отказом от использования статических файлов в Node, связана с идеей использования того, что вы знаете лучше всего, или использования того, что воспринимается как более проверенное / более стабильное. На самом деле это очень веские причины, но они имеют мало чисто технического значения.
Если вы не найдете функцию, которая возможна на классическом веб-сервере, которая невозможна с Node (и я сомневаюсь, что вы это сделаете), выберите то, что вы знаете лучше всего, или то, с чем вы предпочитаете работать, так как любой из этих подходов подходит.
Что касается Nginx против Apache - они будут «играть» с Node одинаково. Вы должны сравнить их безотносительно к узлу.
systemd, pm2и т.д. Таким образом , есть свои плюсы и минусы , и пользователь должен выбрать свой яд, так сказать ,
express.staticбудет отлично работать с ETag и заголовками контроля кэша.