Nginx a Node.js na portu 80

Založil Elipso, 02. 05. 2015, 16:54:59

Předchozí téma - Další téma

Elipso

Zdravim vas

Mam mensie VPS s NGINX a tam ma zlozky www1,www2,www3 pre kazdy web a domenu. Vsetko na porte 80.

Problem nastava ked spustim nodejs kedze aj on potrebuje port 80. Da sa to nejak presmerovat aby node bezal na porte 4000 ale ked niekto zada www.domena.sk tak to bude stale 80?



Petr Krčmář

Ano, tebou navržené řešení je správné. Dělá se to tak, že spustíš Node.js na nějakém jiném portu. Přibližně takhle:

http.createServer(
...
).listen(8000, "127.0.0.1");


Potom nadefinuješ v Nginx nový web, který se bude vyřizovat na tom lokálním portu. Nginx pak funguje jako reverzní proxy. Konfigurace bude asi taková (zkráceno na to zásadní):


upstream web5 {
    server 127.0.0.1:8000;
}

server {
  listen   80;
  listen   [::]:80;
  server_name domena.cz www.domena.cz;

  location / {
      proxy_pass http://web5/;
    }
}

Elipso

Dakujem pomohlo  :)

Este mam jednu otazku ako na autostart aplikacie (npr po vypadku).

Mam 1 >  .sh v /home/aplikacia/nieco.sh
          2 >  nodejs blahblah.js

na to aby to pezalo na pozadi som pouzil SCREEN

Petr Krčmář

Nejsem odborník na Node.js, ale co jsem pochopil, tak se k tomu obvykle používá process manager. Dá se nainstalovat pomocí npm (Node Packaged Modules) jako balík pm2. Ten by se měl starat o spouštění jednotlivých aplikací a jejich běh na pozadí. K tomuhle už ale bude třeba otevřít dokumentaci k Node.js, tohle už není záležitost Debianu.

Elipso

No tak som to nejak vyriesil za pomoci screen-u

Krok 1
nano /etc/init.d/blah


Krok 2

#!/bin/bash
case "$1" in
  start)
    cd /home/bordel && /usr/bin/screen -s /bin/bash -dmS MENO ./run.sh
    echo "Bordel started (maybe)"
    ;;
  stop)
    screen -X -S MENO kill
    echo "Bordel shutting down"
    ;;
  *)
    echo "Usage: /etc/init.d/blah {start|stop}"
    exit 1
    ;;
esac

exit 0



Krok 3
update-rc.d blah defaults


Podobne aj pre Node

    cd /var/www5 && /usr/bin/screen -s /bin/bash -dmS nodemeno node blah.js



Elipso

Este treba prist na to aby sa jeden spustil asi o 30s neskor po starte

Elipso

Vyriesene (spojil som tie 2sh, a pridal sleep 30)  ;D


#!/bin/bash
case "$1" in
  start)
    cd /home/elipso && /usr/bin/screen -s /bin/bash -dmS MENO ./run.sh
    echo "Server started"
    ;;
  stop)
    screen -X -S MENO kill
    echo "Server shutting down"
    ;;
  *)
    echo "Usage: /etc/init.d/MENO {start|stop}"
    exit 1
    ;;
esac

sleep 30

case "$1" in
  start)
    cd /var/www5 && /usr/bin/screen -s /bin/bash -dmS MENO node node.js
    echo "node.js started"
    ;;
  stop)
    screen -X -S MENO kill
    echo "Server node.js shutting down"
    ;;
  *)
    echo "Usage: /etc/init.d/MENO {start|stop}"
    exit 1
    ;;
esac

exit 0