If I run my expressjs app like so: coffee server.coffee
and navigate to localhost:8080
, everything works just fine.
However, when I reverse pro
I am new to setting up a VMS using nginx
and forever
with nodejs
/meanjs
. My goal was to configure a proxy to be able to serve my app on the default port 80 rather than from port 3000.
While fumbling about with nginx server block snippets from a variety of different online examples I started to hit a wall with "502 Bad Gateway" errors. Through a lot of trial and error I was finally able to resolve this condition.
In the end, what seemed like equivalent ways of using forever
to start node
ended up with very different results.
When issued from the server's root using an absolute path to the node script, this command failed with a 502:
$ cd /
$ sudo forever start --spinSleepTime 10000 /var/www/mydomain.com/server.js
Actually, for that matter if node
is not running at all I was also getting a 502 error.
Two ways that did work were either starting forever
from my project's root directory without specifying a path to the node script (just the filename) or again from the server's root but using the sourceDir
option:
$ cd /var/www/mydomain.com
$ sudo forever start --spinSleepTime 10000 server.js
Or:
$ cd /
$ sudo forever start --spinSleepTime 10000 --sourceDir /var/www/shotplot.info/ server.js
Just for completeness I will also include the nginx server block in case that helps provide some additional context:
upstream nodejs \{
server 127.0.0.1:3000;
}
server {
root /var/www/mydomain.com;
server_name mydomain.com www.mydomain.com;
location / {
proxy_set_header X-Real-IP $remote_addr;
proxy_set_header X-Forwarded-For $remote_addr;
proxy_set_header Host $host;
proxy_pass http://nodejs;
proxy_redirect off;
}
}