• Moyenne : 0 (0 vote(s))
  • 1
  • 2
  • 3
  • 4
  • 5
Faire communiquer nativement Nginx et Express (NodeJS)
Staff
#1
Hello !

Aujourd'hui je vous fais un petit tutoriel pour vous apprendre à faire communiquer nativement Nginx et Express.
Qu'est ce que cela veut dire ?


Prenons un exemple simple:

Vous avez un site internet hébergé sur votre VPS utilisant le serveur web Nginx. Vous avez acheté (ou obtenu via Let's Encrypt, etc), un certificat SSL.
Vous avez donc un domaine avec HTTPS.
Mais si maintenant on rajoute quelque chose à tout ça, on lance Express sur le port 8080 par exemple et qu'on vérifie les appels GET dans notre code, si on accède à mondomaine.fr:3000/node/CheminDaccès en https, cela ne fonctionnera pas, logique, le port https est sur le port 443 et là on hit le port 3000. On ne va pas prendre 2 certificats, inutile ..
Dans ce tutoriel, je vais vous expliquer rapidement pour que cette URL revient au même que de faire: [Only registered and activated users can see links Click here to register]

Voici un fichier .js basique utilisant Express:

Code PHP :
'use strict';

const 
express = require('express'),

var 
app express();

app.get('/funkyemu/test', function(reqres) {
 
      // Corps de ma fonction suite à un appel GET sur /funkyemu/test
});

var 
server app.listen(process.env.PORT || 8080, function ()
{
  console.log("Express tourne sur le port %s"server.address().port);
}); 

Voici le code le plus basique.
Vous remarquerez que dans ma fonction app.get (qui permet de vérifier les appels GET), j'ai ajouté un chemin (/funkyemu/ pour accéder à test. Vous comprendrez plus tard pourquoi. En effet, je ne peux pas faire un appel get sur la racine ( / ) car il y a déjà mon site internet dessus et cela risque de poser soucis pour la configuration qui va suivre.

Passons maintenant à la configuration du Reverse Proxy sur Nginx. Qu'est ce que c'est qu'un Reverse Proxy ? C'est tout simplement l’inverse d'un proxy !
Brièvement, cela va nous permettre d'accéder à notre URL sans passer par le port tout en gardant notre https ! (Ce qui est parfois utile généralement pour des APP Facebook pour la configuration du Webhook).

Il suffit tout simplement de configurer son fichier nginx:
/nginx/sites-enabled/default

Voici comment je l'ai configuré:

Code PHP :
       location /funkyemu {
 
               proxy_pass http://localhost:8080;
 
       

C'est tout ce qu'il y a à faire !
Vous remarquerez une nouvelle fois que j'ai ajouté le proxy_pass dans location /funkyemu.
En effet, si je proxy_pass sur la racine /, c'est sûr que mon site Internet à côté de fonctionnera plus, normal ..

Donc maintenant en accédant à l'URL [Only registered and activated users can see links Click here to register] , tout fonctionne !
Vous pouvez rajouter un proxy_pass sur tous les ports que vous souhaitez utiliser, sans problème.

Voila !  Clap
Si vous avez des questions, n'hésitez pas, j'essayerai d'y répondre  Top
[Image: 1462886569-140409115944697214-1.gif]
  Répondre
Staff
#2
Modification sur le tutoriel au niveau du ProxyPass, petite erreur. Désolé.
[Image: 1462886569-140409115944697214-1.gif]
  Répondre
Staff
#3
Hey merci de ton investissement ! Rire
[Only registered and activated users can see links Click here to register]

[Only registered and activated users can see links Click here to register] [Only registered and activated users can see links Click here to register] [Only registered and activated users can see links Click here to register]
WEBDEVELOPER
SYSADMIN
  Répondre




Utilisateur(s) parcourant ce sujet : 1 visiteur(s)
Donation's plugin by Naoar.com