Nginx负载均衡器在故障转移服务器上显示错误的站点

我有五个网站,我有三个服务器,所有运行nginx

  1. 主服务器
  2. 负载平衡
  3. 故障转移服务器

每个网站都有自己的主服务器,但他们都共享相同的故障转移服务器。 我的负载平衡器设置为发送所有stream量到每个网站的主服务器。 只有当主服务器closures时,负载均衡器才会将stream量发送到故障转移服务器。

对于每个网站,我在负载均衡器上都有一个单独的nginxconfiguration文件,与以下类似:

upstream website { server 1.2.3.4 fail_timeout=3s max_fails=3 weight=10000; server 4.3.2.1; } server { listen 80; server_name www.websitename.com; client_max_body_size 150M; location / { proxy_pass http://website; } } server { listen 80; server_name websitename.com; client_max_body_size 150M; location / { proxy_pass http://website; } } 

有了这个configuration文件,一切正常。 所有stream量都发送到主服务器,如果主服务器closures,stream量将被发送到故障转移服务器。

问题出现在故障转移服务器上。 我在故障转移服务器上有五个不同的网站,所有这些网站都在site-available目录中有自己的nginxconfiguration文件。 问题是,当stream量发送到故障转移服务器,nginx显示第一个可用的configuration文件和关联的网站,而不是正确的网站。

故障转移服务器上的每个网站configuration文件都如下面的configuration文件。 当然,每个人都有一个不同的URL和根目录,但这是唯一的区别。 在这种情况下,我已经将示例configuration文件与示例负载均衡器configuration文件相关联:

 server { listen 80; listen [::]:80; root /usr/share/nginx/html/websitename; index index.php; server_name websitename.com; location / { try_files $uri $uri/ /index.php?$args; } location ~ \.php$ { try_files $uri =404; fastcgi_split_path_info ^(.+\.php)(/.+)$; fastcgi_pass unix:/var/run/php5-fpm.sock; fastcgi_index index.php; include fastcgi_params; } } 

此外,我不知道这是否重要,但网站的DNS Alogging设置为指向负载平衡器。

我相当确定问题在于故障转移网站configuration文件,但我不知道什么是错的。 我将不胜感激任何帮助,谢谢。

看起来我发现了这个答案。

我需要添加行proxy_set_header主机$主机; 在我的负载均衡器configuration文件的proxy_pass行下。