Nginx не запускает Passenger/Nodejs

Я не могу заставить Пассажира запускать мое приложение Nodejs (iojs) при перезапуске nginx. Я следовал учебным руководствам и установил предпосылки:

$ nginx -V
версия nginx: nginx/1.8.0
настройте аргументы: - with-cc-opt = '-g-O2 - fstack-средство-защиты - param=ssp-buffer-size=4-Wformat … … … - добавлять-модуль =/tmp/buildd/nginx-1.8.0/debian/modules/passenger/ext/nginx

в http блок включил:

 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;

Затем в блоке сервера:

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/;
    }
}

Затем перезапуская nginx я пытаюсь загрузиться выше на страницу, и в журналах ошибок я вижу:

… 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"

Движение к URL дает мне 502 недопустимых шлюза.

Я не видел nginx примеров блока сервера, которые подобны, таким образом, я получаю чувство, что я делаю некоторые вещи очень неправильно.

1
задан 28 August 2015 в 11:21
1 ответ

Оказывается, причина, по которой пассажир не запускается, заключалась в том, что, похоже, блок location / требуется не для прокси-запроса, а для его обработки. Следующая конфигурация сработала.

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;
}

Еще одна вещь, которая мне не была ясна с самого начала, - это то, что пассажир / nginx берет общий каталог и делает все там доступным без / public в URL.

Таким образом, любые запросы с /public/images/logo.png просто /images/logo.png

1
ответ дан 4 December 2019 в 00:01

Теги

Похожие вопросы