skip to Main Content

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


  1. Try use rewrite directive in location block.

    Something like:

    location /example1/ {
      rewrite     ^/example1/(.*)$ /$1 break;
      proxy_pass  http://xxxxxx;
    }
    

    You can check documents related to rewrite module at http://nginx.org/en/docs/http/ngx_http_rewrite_module.html

    Login or Signup to reply.
  2. 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;
            }
        }
    
    Login or Signup to reply.
Please signup or login to give your own answer.
Back To Top
Search