Simon Mo
Simon Mo

Reputation: 583

Setup NGINX to serve several sites on the same host

Trying to figure out how I could setup NGINX to serve several sites on the same host, with subfolder unified config. trying to have mydomain.com/blue and mydomain.com/red serving 2 different NodeJS websites.

So far I did this : 2 configs, which are in sites-availables with symlink in sites-enables

they both have the same config, unless for the upstream, where I change the name and the port.

# path: /etc/nginx/sites-available/blue.conf


# Server
upstream blue {
    server 127.0.0.1:1337;
}

server {
    # Listen HTTP
    listen 80;
    server_name mydomain.com;

    # Redirect HTTP to HTTPS
    return 301 https://$host$request_uri;
}

server {
    # Listen HTTPS
    listen 443 ssl http2;
    server_name mydomain.com;

    # SSL config
    ssl_certificate /etc/letsencrypt/live/mydomain.com/fullchain.pem; # managed by Certbot
    ssl_certificate_key /etc/letsencrypt/live/mydomain.com/privkey.pem; # managed by Certbot
    include /etc/letsencrypt/options-ssl-nginx.conf; # managed by Certbot
    ssl_dhparam /etc/letsencrypt/ssl-dhparams.pem; # managed by Certbot

    # Static Root
    location / {
        root /var/www;
    }

    # API and Admin
    location /blue/ {
        rewrite ^/blue/?(.*)$ /$1 break;
        proxy_pass http://blue/;
        proxy_http_version 1.1;
        proxy_set_header X-Forwarded-Host $host;
        proxy_set_header X-Forwarded-Server $host;
        proxy_set_header X-Real-IP $remote_addr;
        proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
        proxy_set_header X-Forwarded-Proto $scheme;
        proxy_set_header Host $http_host;
        proxy_set_header Upgrade $http_upgrade;
        proxy_set_header Connection "Upgrade";
        proxy_pass_request_headers on;
    }
}

For the other conf, it's the same with those differences :

# Server
upstream red {
    server 127.0.0.1:2160;
}

    # API and Admin
    location /red/ {
      rewrite ^/red/?(.*)$ /$1 break;
      proxy_pass http://red/;
      ...
    }

It is currently not working, after setting up second site and relaoding nginx, I got a 403 forbidden or the first one, the second one works tho

Any clue ?

Upvotes: 1

Views: 917

Answers (1)

Simon Mo
Simon Mo

Reputation: 583

Finally fixed the issue.

The problem is that I had 2 conf, both with the same domain, each of them had their own server block.

Had to put all subfolders location directives in an unique server block, instead of one per site.

Upvotes: 0

Related Questions