Nginx - configuração de vários servidores

4

Eu tenho um cluster de 8 servidores independentes, cada um rodando nginx. Todos eles hospedam os mesmos sites e estão sendo sincronizados com o rsync.

Além disso, cada servidor tem 8 endereços IP diferentes anexados a ele.

Meus sites hospedados estão sendo direcionados para IPs diferentes de acordo com alguma lógica de negócios.

Existe alguma maneira eu posso sincronizar o arquivo de configuração entre todos os servidores, mas mudar apenas o IP em cada um deles?

Por exemplo, tenha um nginx.conf em cada servidor com:

@IP1 = '1.1.1.1';
@IP2 = '2.2.2.2';

include 'sites.conf';

e depois sincronizar o sites.conf e deixá-lo ser algo como:

server {
  listen @IP1:80;
  ... //more configurations here
}

É possível fazer algo assim?

    
por shaharmor 07.02.2013 / 11:29

1 resposta

1

Como outros notaram, o nginx não suporta isso.

A possibilidade pode ser usar arquivos de configuração separados para cada um dos hosts individuais e fazer com que o script de inicialização nginx faça referência a esse arquivo de configuração diretamente.

Método 1: vários arquivos de configuração

/etc/init.d/nginx faria algo como:

MyIP='# some code to get my ip address or local ID'
nginx -c $PATH_TO_NGINX/${MyIP}.conf

Dessa maneira, você está rsyncando os mesmos arquivos para todos, mas cada servidor fará referência apenas ao seu próprio arquivo de configuração.

Método 2: atualizar dinamicamente o arquivo de configuração no início / reinício do serviço

MyIP='# some code to get my ip address or local ID'
updateconfig($MyIP,$TEMPLATECONFIG,$LOCALCONFIG) # Some function which will take a template config distributed out and replace the IP-PLACEHOLDERS with the box's actual IP address
nginx -c $PATH_TO_NGINX/$LOCALCONFIG

Dessa maneira, você gerencia apenas um modelo de arquivo de configuração que se auto-atualiza em um reinício / recarregamento.

Se você ainda não precisa da complexidade adicional do gerenciamento Puppet / config, este é um caminho de baixa sobrecarga, e como a configuração é dinâmica, ainda permite que você dimensione sem se preocupar com o endereço IP da caixa. Mas se a sua arquitetura mudar, o gerenciamento de configuração será muito útil.

    
por 09.04.2013 / 23:16