O balanceador de carga Nginx mostra um site incorreto no servidor de failover

1

Eu tenho cinco sites e tenho três servidores, todos rodando nginx.

  1. servidor principal
  2. Balanceador de carga
  3. Servidor de failover

Cada site tem seu próprio servidor principal, mas todos compartilham o mesmo servidor de failover. Meu balanceador de carga está configurado para enviar todo o tráfego para o servidor principal de cada site. Somente se esse servidor principal ficar inativo, o balanceador de carga enviará tráfego para o servidor de failover.

Para cada site, eu tenho um arquivo de configuração nginx separado no balanceador de carga semelhante a este:

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;
        }
}

Com esse arquivo de configuração, tudo funciona bem. Todo o tráfego é enviado para o servidor principal, se o servidor principal ficar inativo, o tráfego será enviado para o servidor de failover.

O problema vem com o servidor de failover. Eu tenho cinco sites diferentes no servidor de failover, todos com seu próprio arquivo de configuração nginx separado no diretório de sites disponíveis. O problema é que, quando o tráfego é enviado ao servidor de failover, o nginx exibe o primeiro arquivo de configuração disponível e o site associado, não o site correto.

Cada arquivo de configuração do site no servidor de failover se parece com o arquivo de configuração abaixo. Naturalmente, cada um tem um URL diferente e um diretório raiz, mas essa é a única diferença. Nesse caso, combinei o arquivo de configuração de exemplo a ser associado ao exemplo do arquivo de configuração do balanceador de carga:

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;                          
        }
}

Além disso, não tenho certeza se isso é importante, mas o DNS Um registro para o site está definido para apontar para o balanceador de carga.

Estou certo de que o problema está na falha dos arquivos de configuração do site, mas não sei o que está errado. Eu apreciaria qualquer ajuda, obrigado.

    
por user715564 31.08.2015 / 16:50

1 resposta

0

Parece que descobri a resposta para isso.

Eu precisava adicionar a linha proxy_set_header Host $ host; logo abaixo das linhas proxy_pass nos meus arquivos de configuração do balanceador de carga.

    
por 31.08.2015 / 18:26