Amazon ELB e multi-domínio no servidor Nginx

2

Eu tenho uma instância do EC2 executando o Nginx com vários domínios. Minha configuração começa assim:

server {
    listen 80;
    #disable_symlinks off;
    server_name _; #allow few domains

    #Adding 'www.' to url in case it doesen't
    if ($host !~* ^www\.) {
       rewrite ^(.*)$ http://www.$host$1 permanent;
    }

  location / {
  if (!-e $request_filename){
    rewrite ^(.*)$ /index.php;
  }
    index index.html index.php;
}

Não tenho certeza de qual caminho de ping usar no ELB (amazon) porque, se eu tentar o HTTP, a instância sempre falhará. Se eu tentar o TCP (porta 80), o ping terá sucesso. Eu tenho que usar HTTP porque eu quero usar viscosidade.

Algum conselho? obrigado, Danny

    
por Danny Valariola 10.03.2013 / 18:16

1 resposta

5

Outra resposta no Serverfault nos diz que o ELB não espera nada além de um código de status 200 OK .
Este é um problema para sua configuração, porque rewrite causará 3** códigos de status.

Crie um novo local para o caminho de ping assim:

location = /elb-ping {
    return 200;
}

Em seguida, use o site www. para o ping para evitar o redirecionamento

Se você não pode alterar o domínio ping para www. :
Você terá que mover o redirecionamento para www. para um bloco server .
Ou você define um alvo de ping estático na sua configuração.

caminho fácil

server {
    listen 81; # What about using a different port for ELB ping?
    server_name _; # Match all if the listen port is unique,
    #server_name elb-instance-name; # Or match a specific name.

    return 200; # Not much magic.
}

server {
    listen 80;
    #disable_symlinks off;
    server_name _; #allow few domains

    #Adding 'www.' to url in case it doesen't
    if ($host !~* ^www\.) {
        rewrite ^(.*)$ http://www.$host$1 permanent;
    }

    location / {
        if (!-e $request_filename){
            rewrite ^(.*)$ /index.php;
        }
        index index.html index.php;
    }

Forma muito complexa

server {
    listen 80;
    # match hostnames NOT being www.*
    # Unfortunately matches only names with length >= 4
    server_name ~^(?P<domain>[^w]{3}[^\.].*)$;
    location / {
        rewrite ^(.*)$ $scheme://www.$domain$1; # rewrite to www.*
    }

    location = /elb-ping {
        return 200;
    }
}

server {
    listen 80;
    server_name www.*; # match hostnames starting with www.*

    ## YOUR EXISTING CONFIG HERE (without the if block and elb-ping location)
}
    
por 10.03.2013 / 19:42