Nginx How do i route to reverse proxy by location

Viewed 1952

Currently i'm using nginx server and using nodejs server as reverse proxy. I want to make the nginx server proxy_pass different server by location.

So, lets say my domain is subdomain.domain.com.

When loading subdomain.domain.com/, this should serve static files.

When loading subdomain.domain.com/example1/req1/req2, this should route to 127.0.0.1:3000/req1/req2.

When loading subdomain.domain.com/example2/req1/req2, this should route to 127.0.0.1:8080/req1/req2.

But my configuration routes subdomain.domain.com/example1/req1/req2 to 127.0.0.1:3000/example1/req1/req2 resulting error. (nodejs returns Cannot GET /example1)

How should I write this nginx conf file properly?

2 Answers

You need to add below code snippet to your nginx.conf.

    server subdomain.domain.com;
        location / {
            rewrite     ^/example1/(.*)$ /$1 break;
            proxy_pass http://127.0.0.1:3000;
        }
    }
Related