Node.js con nginx
Si queréis ejecutar node.js bajo nginx, por el problemilla de no poder sacar nodejs por el puerto 80 sin ser root, pues vamos a usar nginx. Creo que con iptables redireccionando el puerto se puede hacer, pero bueno... he tomado esta opción y funciona!
Vamos alla.
Primero, instalamos nodejs y nginx
instalacion de nodejs
$ sudo apt-get update && sudo apt-get install git curl build-essential openssl libssl-dev gcc
$ git clone https://github.com/joyent/node.git
$ cd node && ./configure --openssl-libpath=/usr/lib/ssl
$ make
$ make install
instalacion de nginx
$ sudo apt-get update
$ sudo apt-get install nginx
Bien, una vez instalado nos vamos a /etc/nginx/sites-available/
$ cd /etc/nginx/sites-available
con nuestro editor favorito (en este caso nano) creamos un archivo con el nombre de nuestro dominio
$ sudo nano dominio.es
Dentro del archivo colocamos lo siguiente:
# IP y puerto donde ejecutamos nodejs, en este caso el puerto 8080, puedes coger el que quieras
upstream app_yourdomain {
server 127.0.0.1:8080;
}
# the nginx server instance
server {
listen 0.0.0.0:80;
server_name dominio.es dominio;
access_log /var/log/nginx/dominio.log;
# pasamos a nodejs lo que viene por http
location / {
proxy_set_header X-Real-IP $remote_addr;
proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
proxy_set_header Host $http_host;
proxy_set_header X-NginX-Proxy true;
proxy_pass http://127.0.0.1:8080/;
proxy_redirect off;
}
}
Ahora hay que activar el sitio, ¿como? con un enlace
$ cd /etc/nginx/sites-enabled/
$ sudo ln -s /etc/nginx/sites-available/dominio.es dominio.es
Ahora, en el directorio que queramos montamos nodejs:
var http = require('http');
http.createServer(function (req, res) {
res.writeHead(200, {'Content-Type': 'text/plain'});
res.end('Que pasa mediavida\n');
}).listen(3000, "127.0.0.1");
console.log('Servidor funcionando en http://127.0.0.1:3000/');
Reiniciamos nginx
$ sudo /etc/init.d/nginx restart
Y ejecutamos nodejs
$ node app.js
Y ya tenemos todo funcionado
pd, cualquier cosa avisadme