目前,我有 nginx > 25 x nginx + fcgi
主 nginx 执行负载平衡,每个虚拟主机监听不同的 ip(不同的产品)。
一些 ip 接收不同的主机名,并且它们被重写回后端服务器,例如:
...http://some-random-url.com/path
获取/路径 HTTP/1.1
主机:app1
X-Original-Host: some-random-url.com
X-转发-针对:12.34.56.78
....
我们目前正在用 haproxy(更好的负载平衡算法)替换主代理,但我不知道如何附加原始主机。(我找不到有关 nginx 的 $host 等变量的任何文档)。
我可以像这样重写 URL:
reqirep ^Host: 主机:\ app1
但“app1”仍然需要原始主机名来执行业务逻辑。
我考虑过在不同的端口上运行每个应用程序,但问题是我希望 nginxhttpchk
适用于所有后端服务器,并且backend
每个应用程序执行一次意味着 10 个应用程序 x 10 次检查 = 每秒对每个后端进行 10 次检查(除非日志数据撒谎)。
有人有想法吗?
答案1
只需将Host
标头保留原样 - HAProxy 通常不会骚扰它,因此如果您将其保留原样,它将被传递到您的应用程序服务器。