Configurei meu servidor com Nginx (v= ), e quando tento solicitar usando HEAD, recebo um 404:
curl -I http://postera.in
HTTP/1.1 404 Not Found
Server: nginx/1.2.1
Date: Thu, 19 Dec 2013 09:51:53 GMT
Content-Type: text/html; charset=utf-8
Content-Length: 1900
Connection: keep-alive
Aqui está a configuração do meu servidor Nginx:
server {
listen 80;
server_name www.postera.in;
return 301 $scheme://postera.in$request_uri;
}
server {
listen 80;
server_name postera.in;
access_log /var/log/nginx/postera_manager.access.log;
error_log /var/log/nginx/postera_manager.error.log;
location / {
proxy_buffering off;
proxy_set_header X-Real-IP $remote_addr;
proxy_set_header X-Scheme $scheme;
proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
proxy_set_header Host $http_host;
proxy_pass http://127.0.0.1:9800;
}
}
O que há de errado com esta configuração? Por que um HEAD retorna 404 em vez de 200?
Obrigado pela ajuda :)
Responder1
Bem, vou me responder sobre isso.
O problema não é do NGinx mas sim do backend, aqui, PlayFramework que retorna 404 quando um HEAD é solicitado e os arquivos de rotas não contém HEAD.
Um bug foi aberto para isso:https://github.com/playframework/playframework/issues/2280
Responder2
qual é o ponto de usar:
return 301 $scheme://postera.in$request_uri;
e por que não este:
server_name www.example.com;
rewrite ^ http://example.com$request_uri? permanent;
Além disso, você pode depurar a resposta diretamente do suporte sem nginx pelo seguinte comando na linha de comando no servidor:
curl -I postera.in --resolve postera.in:9800:127.0.0.1
Responder3
Para solucionar esse problema, eu abriria dois terminais no servidor Web para rastrear seu /var/log/nginx/postera_manager.access.log e /var/log/nginx/postera_manager.error.log junto com a execução do Wireshark em ambas as extremidades (curl e servidor Web).
Além disso, como o servidor responde a amboshttp://postera.inEhttp://www.postera.inEu daria uma chance ao curl em ambos. Além disso, eu também daria uma chance ao wget ou a qualquer outro rastreador da Web, como o Lynx, para eventualmente notar a diferença. Das diferenças muitas vezes surge a definição raiz do problema. Da causa raiz, a solução surge naturalmente.
Nunca suponho uma causa raiz enquanto não for apoiada por fatos observados, cruzando tanto quanto possível as condições de teste.
Na esperança de que o que foi dito acima possa ajudar. Atenciosamente, Philippe Vouters (Fontainebleau/França [quase toda a carreira como suporte de engenheiro de software])