web-dev-qa-db-fra.com

Quelle est la meilleure approche: servir des fichiers statiques avec Express ou nginx?

Je construis une application Node.js et j'utilise nginx comme proxy inverse. Mon application contient des fichiers statiques que je dois servir et un serveur Socket.io.

Je sais que je peux servir des fichiers statiques directement avec Express (en utilisant un middleware express.static). Je peux également pointer nginx directement vers le répertoire où se trouvent mes fichiers statiques, afin qu'ils soient servis par nginx.

Alors, la question: quelle est la meilleure approche? Quels avantages et inconvénients puis-je faire face en utilisant chaque approche?

17
serge1peshcoff

pour le développement: express , principalement en raison de la flexibilité qu'il offre ... vous pouvez changer très facilement votre emplacement statique et votre structure pendant le développement

pour la production: nginx , car c'est beaucoup plus rapide. Node/express est bon pour exécuter la logique, mais pour servir du contenu brut ... rien ne peut battre nginx. Vous bénéficiez également de fonctionnalités supplémentaires telles que gzip, équilibrage de charge ...

Néanmoins, cette question a déjà été posée plusieurs fois dans stackoverflow: voir

33
tato

La documentation Express recommande explicitement d'utiliser un proxy inverse dans la mesure du possible . Pour citer cet article :

Nginx peut faire un bien meilleur travail de gestion des fichiers statiques et peut empêcher les demandes de contenu non dynamique de boucher nos processus de nœuds.

Il y a énormément d'articles sur le sujet qui entrent dans les détails, mais je tiens absolument compte des recommandations des développeurs Express.

7
Matthew Daly