Configuré mi servidor con Nginx (v=), y cuando intento realizar una solicitud usando HEAD, obtengo un 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
Aquí está la configuración de mi 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;
}
}
¿Qué hay de malo en esta configuración? ¿Por qué HEAD devuelve 404 en lugar de 200?
Gracias por la ayuda :)
Respuesta1
Bueno, me responderé a eso.
El problema no es de NGinx sino del backend, aquí, PlayFramework que devuelve un 404 cuando se solicita un HEAD y los archivos de rutas no contienen HEAD.
Se ha abierto un error por eso:https://github.com/playframework/playframework/issues/2280
Respuesta2
¿Cuál es el punto de usar?
return 301 $scheme://postera.in$request_uri;
y por qué no este:
server_name www.example.com;
rewrite ^ http://example.com$request_uri? permanent;
También puede depurar la respuesta directamente desde el respaldo sin nginx mediante el siguiente comando desde la línea de comando en el servidor:
curl -I postera.in --resolve postera.in:9800:127.0.0.1
Respuesta3
Para solucionar un problema de este tipo, abriría dos terminales en el servidor web para rastrear su /var/log/nginx/postera_manager.access.log y /var/log/nginx/postera_manager.error.log junto con la ejecución de Wireshark en ambos extremos. (curl y servidor web).
Además, como el servidor responde a amboshttp://postera.inYhttp://www.postera.inLe daría una oportunidad a curl con ambos. Además, también le daría a wget o a cualquier otro rastreador web, como Lynx, la oportunidad de notar una diferencia. De las diferencias surge a menudo la definición del problema raíz. Desde la raíz misma, la solución surge de forma natural.
Nunca supongo una causa raíz mientras no esté respaldada por hechos observados, cruzando la mayor cantidad posible de condiciones de prueba.
Con la esperanza de que lo anterior pueda ayudar. Saludos, Philippe Vouters (Fontainebleau/Francia [casi toda su carrera como ingeniero de software])