Tente isso
set $acceptHeader $http_accept;
if ($acceptHeader !~ ".") {
set $acceptHeader '/';
}
proxy_set_header Accept $acceptHeader;
Alguns dispositivos móveis enviam as seguintes solicitações incorretas para nossos servidores:
GET / HTTP/1.0
Accept:
User-Agent : xxx
O cabeçalho Accept vazio faz com que nosso servidor Ruby on Rails retorne um erro 500.
No Apache, a seguinte diretiva nos permite reescrever o cabeçalho antes de enviá-lo para o servidor RoR do aplicativo, a fim de lidar com os dispositivos quebrados:
RequestHeader edit Accept ^$ "*/*" early
Atualmente, estamos configurando o nginx, mas a obtenção da mesma solução alternativa está se mostrando difícil. Somos capazes de definir:
proxy_set_header Accept */*;
No entanto, isso parece ter que ser feito incondicionalmente. Sempre tentando fazer:
if ($http_accept !~ ".") {
proxy_set_header Accept */*;
}
Ele reclama com a mensagem:
"proxy_set_header" directive is not allowed here
Então, usando o nginx, como podemos definir o cabeçalho HTTP Accept como */*
quando estiver vazio antes de enviar o pedido para o servidor de aplicativos?