服务器在请求HEAD时返回404代码?

我用Nginx(v =)configuration了我的服务器,当我尝试请求使用HEAD时,我得到了一个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 

这是我的服务器Nginxconfiguration:

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

这个configuration有什么问题? 为什么HEAD返回404而不是200?

谢谢您的帮助 :)

那么,我会回答自己的问题。

这个问题不是来自NGinx,而是来自后端,在这里,当请求HEAD并且路由文件不包含HEAD时,PlayFramework返回404。

一个错误已经打开: https : //github.com/playframework/playframework/issues/2280

什么是使用点:

 return 301 $scheme://postera.in$request_uri; 

为什么不是这个:

 server_name www.example.com; rewrite ^ http://example.com$request_uri? permanent; 

您也可以通过服务器上的命令行中的以下命令直接从不带nginx的支持中debugging响应:

 curl -I postera.in --resolve postera.in:9800:127.0.0.1 

为了解决这个问题,我打开Web服务器上的两个terminal,跟踪你的/var/log/nginx/postera_manager.access.log和/var/log/nginx/postera_manager.error.log,同时在两端运行Wireshark (curl和Web服务器)。

另外,当服务器对http://postera.in和http://www.postera.in都有回应时,我会试着在两者上进行尝试。 而且,我也会给wget一个机会或任何其他Web爬虫,如Lynx最终注意到一个区别。 从差异经常出现根问题的定义。 从根本上来说,解决scheme自然而然地出现。

只要没有观察到的事实支持,我就不会想到一个根本原因,尽可能地跨越testing条件。

希望以上可以帮助。 关于Philippe Vouters(枫丹白露/法国[几乎所有的软件工程师支持])