6

I have been looking all over but haven't found a single person hosting multiple node sites on the same server without using subdomains. I want something like the following...

website.com/app1 -> 127.0.0.1:3000
website.com/app2 -> 127.0.0.1:9000

upstream node {
   server 127.0.0.1:3000;
   keepalive 64;
}

server {
    listen 80;
    server_name  webaddress.com;

    root /var/www/trucks/;

    location /livereload {

        proxy_pass http://localhost:35729;
        proxy_http_version 1.1;
        proxy_set_header Upgrade $http_upgrade;
        proxy_set_header Connection "Upgrade";
    }

    location /app1 {
        rewrite ^/app1/?(.*) /$1 break;
        proxy_set_header X-Real-IP $remote_addr;
        proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
        proxy_set_header Host $http_host;
        proxy_set_header X-NginX-Proxy true;

        proxy_pass http://127.0.0.1:3000;
        root /var/www/trucks;
}

I have even tried rewriting the request; however, that doesn't appear to be having any effect. If I remove /app1 it works correctly. The closest I have gotten is forwarding to multiple sites but then the local express routes are invalid.

4 Answers 4

1

I have a working setup as follows:

server {
  listen 8080;
  server_name localhost;
  location / {
    proxy_pass http://localhost:3000;
    proxy_set_header Host $host;
  }
  location /api {
    proxy_pass http://localhost:3001;
    rewrite ^/api(.*) /$1 break;
    proxy_set_header Host $host;
  }
}
Sign up to request clarification or add additional context in comments.

Comments

0

Have you tried to use the proxy_redirect directive instead of rewrite ? http://wiki.nginx.org/HttpProxyModule#proxy_redirect

Comments

0

Comments

0

the problem with your configuration its that you are mixin regular http applications proxying with websockets application proxying. There is no need to use rewrite. Here is the simplest configuration I could come up with:

server {
  listen 80;
  index index.html index.htm;

  server_name _;

  proxy_http_version 1.1;
  proxy_set_header Upgrade $http_upgrade;
  proxy_set_header Connection "upgrade";
  proxy_set_header Host $host;

  location /node1 {
      proxy_pass http://localhost:8888;
  }
  location /node2 {
      proxy_pass http://localhost:9999;
  }
}

I recommend you redding the websockets related documentation on nginx site: http://nginx.org/en/docs/http/websocket.html

Comments

Your Answer

By clicking “Post Your Answer”, you agree to our terms of service and acknowledge you have read our privacy policy.

Start asking to get answers

Find the answer to your question by asking.

Ask question

Explore related questions

See similar questions with these tags.