apache2

Configuracion Nodejs - Websocket - Apache

Al trabajar sobre un proyecto de nodejs siempre necesitaremos un webproxy que enlace el dominio de produccion con el puerto real sobre el cual se esta ejecutando el proyecto.

Por ejemplo, al tener una URL www.gestiondeproyectos.com, el webproxy se encargaria de reconocer el dominio y redirigir la peticion al puerto donde esta corriendo el servicio de node por ejemplo localhost:8000

En este articulo, vamos a ver la configuracion de un proyecto nodejs usando apache2 ( tambien se pueden usar otros servicios como nginx, lighttpd, etc )

 

Habilitar Modulos

  • a2enmod proxy
  • a2enmod proxy_http
  • a2enmod proxy_wstunnel  (WebSocket)

 

VIRTUAL HOST

 Crear o sobrescribir el archivo 000-default.conf en /etc/apache2/sites-available/ . Dentro de <VirtualHost> añadimos lo siguiente:


#Configuracion basica del host
ServerName www.name.local
ServerAlias name.local
ServerAdmin webmaster@localhost
 
#Ruta de acceso a la carpeta de la aplicacion
DocumentRoot /var/www/html/mySite

 

<Directory />
               Options -Indexes +FollowSymLinks
               AllowOverride None
               Require all granted
</Directory>
 

 

#Cofiguracion socket apache
RewriteEngine On
RewriteCond %(REQUEST_URI) ^/socket.io             [NC]
RewriteCond %(REQUEST_STRING) transport=websocket  [NC]
RewriteRule /(.*)             ws://127.0.0.1:8080/$1 [P,L]
 
#Cofiguracion node  apache    
ProxyRequests Off
ProxyPreserveHost On
ProxyVia Full
 
 <Proxy *>
               Require all granted
  </Proxy>
 
#Espeficamos donde se mostrara la aplicacion
#En este caso se ejecuara en la raiz
   <Location / >
               ProxyPass http://127.0.0.1:8080/
               ProxyPassReverse http://1127.0.0.1:8080/
    </Location>
#Habilitamos los logs
ErrorLog ${APACHE_LOG_DIR}/error.log
LogLevel warn
CustomLog ${APACHE_LOG_DIR}/access.log combined
 
 

HABILITAR CONFIGURACION:

sudo a2ensite 000-default.conf    o el nombre de archivo que se creo
sudo a2dissite 000-default.conf (Para deshabilitar)
 

EJECUTAR NODE:

node app.js


Contactanos