Bonjour,

Je souhaiterais réaliser un site avec authentification et assurer à l'utilisateur une bonne sécurité. Pour cela, je pensais utiliser un certificat SSL pour passer le site en https mais avant tout, j'ai plusieurs questions.

Premièrement, je compte utiliser NodeJS pour l'api et Apache + Angular pour le site. Est une bonne idée de séparer les deux ou pas ?

Ensuite, comme dit ci-dessus, je souhaiterai utiliser du https. Dans le cas où j'aurais Apache et Node JS séparés, est-ce que les deux doivent utiliser le https ou seulement Apache ?

Cordialement,
TheMineGeek

8 réponses


Pandazaur
Réponse acceptée

J'aurais tendance à dire d'utiliser Node.Js à la place de Apache pour le serveur Web, afin d'avoir qu'un seul serveur à gérer. C'est assez simple de gérer les routes.

RK57
Réponse acceptée

Bonjour,

Pour ton application web (Angular) j'utiliserais Nginx ou Apache, qui gère mieux les fichiers statiques.
Ensuite pour ton API en NodeJs tu peux très bien la séparé de ton applciation web. Renseigne toi sur PM2 (un node module pour lancer ton API) et créé un Reverse Proxy Server avec Nginx ou autre qui te permettra de gérer ton ndd et certificat et rediriger vers l'addresse local de ton API.
Regarde ça : https://www.digitalocean.com/community/tutorials/how-to-set-up-a-node-js-application-for-production-on-ubuntu-14-04

J'ai expliqué ça vite fait, mais si tu as besoin de plus d'explications n'hésites pas ;)

Cordialement,

D'accord. Merci :)

Tout d'abord, merci beaucoup pour ta réponse et merci pour PM2. Je viens le mettre en place et ça à l'air extrèmement puissant et pratique. Ensuite, je ne suis pas sûr d'avoir bien compris. Dans le cas ou mon site (sous Apache/Nginx) utilise un certificat SSL, mon api doit utiliser le même.
Si oui, est ce qu'il y a beaucoup de modifications à effectuer dans mon code sachant que j'utilise Express pour le routing ?

Cordialement

De rien ;)

Oui PM2 c'est sympa pour lancer plusieurs instances et gérer tout ça ;)

Alors au niveau du certificat je ne sais pas du tout, j'ai pas encore fais de mise ne production avec. Mais normalement c'est là où tu gère ton sous domaine ou domaine comme api.name.dom qui pointera grâce au reverse proxy sur localhost:3000 (ton API Express). Donc le certificat tu le gère avec ton reverse proxy je pense, ça évite de changer des choses au niveau de ton code Node. Je sais pas si j'ai pu être clair.

Cordialement,

D'accord. Il y a autre chose que je comprends pas, c'est le reverse proxy ? A quoi ça sert ? Comment le mettre en place (côté Apache/Nginx ou NodeJS ?)

Cordialement

Tu as lu mon lien plus haut ? Après le PM2 il explique comme le mettre en place.
Le reverse Proxy sert à avoir accès depuis l'extérieur de serveur sur des fichiers en local, en gros ton NDD pointera sur, par exemple, localhost:3000 de ton serveur local Express grâce à ça.

En général je prend Nginx.
Personnellement pour un client AngularJs et un serveur (API) NodeJs avec Express je ferais comme ça :
Nginx -> tonnomdedom.com qui pointe vers ta webApp AngularJS
Nginx -> je ferais un petit CDN pour fournir par exemple les fichiers statiques (images, ...) cdn.tonnomdedom.com
Tu lance ton API avec PM2 puis reverse proxy avec Nginx -> api.tonnomdedom.com

Du coup tu as une architecture qui as la possibilité d'être indépendante des unes des autres et ton API a même la possibilité d'être dupliqué.

Cordialement,

Okay, merci beaucoup pour tes explications, je n'avais pas lu ton lien mais je m'y atèle tout de suite.

Merci pour ton temps et ton aide,
Cordialement