Reputation: 2759
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.
Upvotes: 6
Views: 1813
Reputation: 3410
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
Upvotes: 0
Reputation: 3142
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;
}
}
Upvotes: 1
Reputation: 552
Upvotes: 0
Reputation: 1967
Have you tried to use the proxy_redirect
directive instead of rewrite
?
http://wiki.nginx.org/HttpProxyModule#proxy_redirect
Upvotes: 0