如何使 NGINX 反向代理以 HTTP header 值为条件
How can I make NGINX reverse proxy conditional on HTTP header value
我有这样的反向代理:
server {
listen 8080;
location = /my-proxy {
proxy_pass https://somehost/v1
}
}
现在,如果 HTTP 请求 header x-version-toggle
设置为 v2
,我想将其传递给 /v2,如下所示:
server {
listen 8080;
location = /my-proxy {
if ($http-x-version-toggle == 'v2') {
proxy_pass https://somehost/v2
}
proxy_pass https://somehost/v1
}
}
实现此目的的精确语法是什么?
可以使用nginx提供的map
算子
map $http_x_version_toggle $backend {
default http://10.41.115.241:8000/;
v2 http://127.0.0.1:9101/;
}
然后在位置使用如下
proxy_pass $backend
我有这样的反向代理:
server {
listen 8080;
location = /my-proxy {
proxy_pass https://somehost/v1
}
}
现在,如果 HTTP 请求 header x-version-toggle
设置为 v2
,我想将其传递给 /v2,如下所示:
server {
listen 8080;
location = /my-proxy {
if ($http-x-version-toggle == 'v2') {
proxy_pass https://somehost/v2
}
proxy_pass https://somehost/v1
}
}
实现此目的的精确语法是什么?
可以使用nginx提供的map
算子
map $http_x_version_toggle $backend {
default http://10.41.115.241:8000/;
v2 http://127.0.0.1:9101/;
}
然后在位置使用如下
proxy_pass $backend