How to make Nginx redirect a request to only one location?

February 8, 2019 221 views
Ubuntu 18.04 Nginx

I have a reverse proxy for two locations / and /services

server {
...

    location / {
        proxy_pass http://localhost:3000;
        proxy_http_version 1.1;
        proxy_set_header Upgrade $http_upgrade;
        proxy_set_header Connection 'upgrade';
        proxy_set_header Host $host;
        proxy_cache_bypass $http_upgrade;
    }

    location /services {
        proxy_pass http://localhost:3001;
        proxy_http_version 1.1;
        proxy_set_header Upgrade $http_upgrade;
        proxy_set_header Connection 'upgrade';
        proxy_set_header Host $host;
        proxy_cache_bypass $http_upgrade;
    }

...
}

And there are two NodeJS APIs one is listening on port 3000 and the other on 3001. Whenever I send a request to example.com/services it gets handled by both apps. I want it to get handled only by the second app listening on port 3001. How do I achieve that?

Be the first one to answer this question.