我无法让Passenger在重新启动nginx时启动我的Nodejs(iojs)应用程序。 我已经按照教程安装了先决条件:
$ nginx -V
nginx版本:nginx / 1.8.0
configuration参数:–with-cc-opt =' – g -O2 -fstack-protector -param = ssp-buffer-size = 4 -Wformat ……… –add-module = / tmp / buildd / nginx-1.8 0.0 /的Debian /模块/乘客/ 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服务器块的例子,所以我觉得我正在做一些非常错误的事情。
事实certificate,乘客未启动的原因是因为它似乎要求location /区块不要代理请求,而是要处理它本身。 以下configuration做了诀窍。
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