1 votes

Nginx ne démarre pas Passenger/Nodejs

Je n'arrive pas à faire en sorte que Passenger lance mon application Nodejs (iojs) au redémarrage de nginx. J'ai suivi les tutoriels et installé les prérequis :

$ nginx -V
Version de nginx : nginx/1.8.0
arguments de configuration : --with-cc-opt='-g -O2 -fstack-protector --param=ssp-buffer-size=4 -Wformat --add-module=/tmp/buildd/nginx-1.8.0/debian/modules/passenger/ext/nginx

dans le http bloc activé :

 passenger_root /usr/lib/ruby/vendor_ruby/phusion_passenger/locations.ini;
 passenger_ruby /usr/bin/passenger_free_ruby;
 passenger_nodejs /usr/local/bin/node;
 passenger_default_user staging;
 passenger_default_group www-data;

Puis dans le bloc serveur :

upstream instance {
    # point to node instance
    server 127.0.0.1:9000;
}

# for websockets
map $http_upgrade $connection_upgrade {
    default upgrade;
    '' close;
}

server {
    listen 3000;
    server_name localhost;

    set $app_root /home/staging/public_html;

    root $app_root/tmp;
    passenger_enabled on;

    # point to where the app.js file is
    passenger_app_root $app_root;
    passenger_sticky_sessions on;

    location / {
            proxy_pass http://instance;
            proxy_http_version 1.1;
            proxy_set_header X-Forwarded-For  $remote_addr;
            proxy_set_header Upgrade $http_upgrade;
            proxy_set_header Connection $connection_upgrade;
            proxy_set_header        X-Forwarded-Proto $scheme;
    }

    # all static non-scripts are here
    location /public/ {
        alias $app_root/app/assets/;
    }
}

Après avoir redémarré nginx, j'essaie de charger la page et je vois dans les journaux d'erreurs :

… Starting Passenger watchdog...
… Starting Passenger core...
… Passenger core running in multi-application mode.
… Passenger core online, PID 26585
… Starting Passenger UstRouter...
… Passenger UstRouter online, PID 26590
… [error] 26736#0: *3 connect() failed (111: Connection refused) while connecting to upstream, client: 188.102.152.94, server: localhost, request: "GET / HTTP/1.1", upstream: "http://127.0.0.1:9000/", host: "staging.chatterplot.com:3000"

Aller à l'url me donne un 502 bad gateway.

Je n'ai pas vu d'exemples de blocs de serveurs nginx similaires, j'ai donc l'impression de faire des choses très mal.

1voto

Maruf Points 159

Il s'avère que la raison pour laquelle le passager ne démarrait pas était parce qu'il semble qu'il faille que le location / n'est pas un proxy mais un gestionnaire de la demande. La configuration suivante a fait l'affaire.

map $http_upgrade $connection_upgrade {
    default upgrade;
    '' close;
}

server {
    listen 3000;
    server_name localhost;

    set $app_root /home/user/public_html/dist;
    root $app_root/public;

    passenger_enabled on;
    passenger_sticky_sessions on;
    passenger_app_type node;
    passenger_app_root /home/user/public_html/dist;
    passenger_app_env production;
}

Une autre chose qui n'était pas claire pour moi depuis le début est que passenger/nginx prend le répertoire public et y rend tout accessible sans /public dans l'url.

Donc toute demande avec /public/images/logo.png sont simplement /images/logo.png

SistemesEz.com

SystemesEZ est une communauté de sysadmins où vous pouvez résoudre vos problèmes et vos doutes. Vous pouvez consulter les questions des autres sysadmins, poser vos propres questions ou résoudre celles des autres.

Powered by:

X