Node JS sous Apache2

Vous avez développé une application Node et vous voulez l’héberger dans le serveur du client qui utilise Apache ? Petit bémol ! Votre avez remarqué que votre application se lance sous le port 3000 car le 80 est déjà pris par Apache? La solution se base sur le principe du proxy.

Tout d’abord, il faut installer les deux modules mod_proxy et mod_proxy_http

a2enmod proxy
a2enmod proxy_http

Maintenant que les modules sont installés, on devra configurer le serveur Apache pour notre application NodeJS qui tourne au port 8080.

<VirtualHost *:80>
   ServerAdmin webmaster@localhost
   ServerName monsite
   ServerAlias www.monsite.com
   DocumentRoot /var/www/html/mondossier
   <Directory />
      Options -Indexes +FollowSymLinks
      AllowOverride None
      Require all granted
   </Directory>
   ProxyRequests Off
   ProxyPreserveHost On
   ProxyVia Full
   <Proxy *>
      Require all granted
   </Proxy>
   <Location /dossierNode>
      ProxyPass http://127.0.0.1:8080
      ProxyPassReverse http://1127.0.0.1:8080
   </Location>
   ErrorLog ${APACHE_LOG_DIR}/error.log
   # Possible values include: debug, info, notice, warn, error, crit,
   # alert, emerg.
   LogLevel warn
   CustomLog ${APACHE_LOG_DIR}/access.log combined
</VirtualHost>

Cette configuration est valide pour les types d’application web et non seulement avec Node JS. Par exemple, on peut configurer notre serveur pour héberger une application Ruby On Rails qui tournera sur le port 5000.