Відповіді:
Є кілька вагомих причин вставити ще один веб-сервер перед Node.js:
Я застережу другу точку кулі, кажу, що ви, ймовірно, можете подавати свої статичні файли через CDN або з-за кешування-сервера, як Varnish. Якщо ви це робите, насправді не має значення, чи походження Node або Nginx або Apache.
Caveat конкретно з 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обробляє ETags та заголовки кеш-пам'яті просто чудово.