Jeroen Kransen
Jeroen Kransen

Reputation: 1471

How can I make NGINX reverse proxy conditional on HTTP header value

I have reverse proxy like this:

server {
    listen 8080;

    location = /my-proxy {
      proxy_pass https://somehost/v1
    }
}

Now I would like to pass it to /v2 if HTTP request header x-version-toggle is set to v2, something like this:

server {
    listen 8080;

    location = /my-proxy {
      if ($http-x-version-toggle == 'v2') {
        proxy_pass https://somehost/v2
      }
      proxy_pass https://somehost/v1
    }
}

What is the precise syntax to achieve this?

Upvotes: 1

Views: 1688

Answers (1)

Shrey Gupta
Shrey Gupta

Reputation: 392

You can use map operator provided by nginx

map $http_x_version_toggle $backend {
        default http://10.41.115.241:8000/; 
        v2 http://127.0.0.1:9101/;
}

And then in the location use it as below

proxy_pass $backend

Upvotes: 2

Related Questions