如何根据 URL 第一个标头重定向 nginx 请求

如何根据 URL 第一个标头重定向 nginx 请求

我有 3 个应用程序服务器,由 nginx 服务器处理。

upstream he {
server h1.abc.example.com;
server h2.abc.example.com;

}

如何根据某些标头值重定向请求?例如

 abc-h1.abc.example.com should go to server 
h1.abc.example.com
 def-h1.abc.example.com should go to server 
h2.abc.example.com

所有请求的位置-h1.abc.example.com都相同。

答案1

Nginx 当然可以做到这一点,您只需要指定每个主机头 ( server_name) 并分离上游,为每个主机分配一个。

像这样的 nginx 服务器片段可能会起作用(我的想法和未经测试):

upstream one { server h1.abc.example.com; }
upstream two { server h2.abc.example.com; }

server {
    listen 8080;
    server_name abc-h1.abc.example.com;

    location / {
        proxy_pass one;
    }
}

server {
    listen 8080;
    server_name def-h1.abc.example.com;

    location / {
        proxy_pass two;
    }
}

如果您想将流量发送到非 HTTP 端点,还有其他代理处理程序 ( fastcgi_passuwsgi_passscgi_pass、 )memcached_pass

编辑:修复错误server_name

相关内容