Autor Téma: Nginx a Node.js na portu 80  (Přečteno 1948 krát)

Offline Elipso

  • Začátečník
  • **
  • Příspěvků: 52
    • Zobrazit profil
Nginx a Node.js na portu 80
« kdy: 02. 05. 2015, 16:54:59 »
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?


« Poslední změna: 02. 05. 2015, 20:10:36 od Petr Krčmář »

Offline Petr Krčmář

  • Administrátor
  • Aktivní­ uživatel
  • *****
  • Příspěvků: 448
    • Zobrazit profil
    • Debian-linux.cz
Re:Nginx + nodejs
« Odpověď #1 kdy: 02. 05. 2015, 20:10:22 »
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:

Kód: [Vybrat]
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í):

Kód: [Vybrat]
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/;
    }
 }

Offline Elipso

  • Začátečník
  • **
  • Příspěvků: 52
    • Zobrazit profil
Re:Nginx a Node.js na portu 80
« Odpověď #2 kdy: 05. 05. 2015, 21:27:30 »
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

Offline Petr Krčmář

  • Administrátor
  • Aktivní­ uživatel
  • *****
  • Příspěvků: 448
    • Zobrazit profil
    • Debian-linux.cz
Re:Nginx a Node.js na portu 80
« Odpověď #3 kdy: 06. 05. 2015, 10:02:08 »
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.

Offline Elipso

  • Začátečník
  • **
  • Příspěvků: 52
    • Zobrazit profil
Re:Nginx a Node.js na portu 80
« Odpověď #4 kdy: 06. 05. 2015, 11:16:25 »
No tak som to nejak vyriesil za pomoci screen-u

Krok 1
Kód: [Vybrat]
nano /etc/init.d/blah

Krok 2

Kód: [Vybrat]
#!/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
Kód: [Vybrat]
update-rc.d blah defaults

Podobne aj pre Node
Kód: [Vybrat]
    cd /var/www5 && /usr/bin/screen -s /bin/bash -dmS nodemeno node blah.js


Offline Elipso

  • Začátečník
  • **
  • Příspěvků: 52
    • Zobrazit profil
Re:Nginx a Node.js na portu 80
« Odpověď #5 kdy: 06. 05. 2015, 14:50:35 »
Este treba prist na to aby sa jeden spustil asi o 30s neskor po starte

Offline Elipso

  • Začátečník
  • **
  • Příspěvků: 52
    • Zobrazit profil
Re:Nginx a Node.js na portu 80
« Odpověď #6 kdy: 08. 05. 2015, 10:33:18 »
Vyriesene (spojil som tie 2sh, a pridal sleep 30)  ;D

Kód: [Vybrat]
#!/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