我有 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_pass
、uwsgi_pass
、scgi_pass
、 )memcached_pass
编辑:修复错误server_name