我用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(枫丹白露/法国[几乎所有的软件工程师支持])