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