Я настроил свой сервер с помощью Nginx (v =), и когда я пытаюсь запросить с помощью 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
Вот конфигурация моего сервера 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;
}
}
Что не так с этой конфигурацией? Почему HEAD возвращает 404 вместо 200?
Спасибо за помощь :)
Хорошо, я сам отвечу на этот вопрос.
Проблема не в NGinx, а в бэкэнде, здесь PlayFramework, который возвращает 404, когда запрашивается HEAD, а файлы маршрутов не содержат HEAD.
Для этого была обнаружена ошибка: 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 с помощью следующей команды из командной строки на сервере:
curl -I postera.in --resolve postera.in:9800:127.0.0.1
Чтобы устранить такую проблему, я бы открыл два терминала на веб-сервере, чтобы отслеживать ваши /var/log/nginx/postera_manager.access.log и /var/log/nginx/postera_manager.error.log вместе с запуском Wireshark на обоих концах (curl и веб-сервер).
Также, поскольку сервер отвечает на оба http://postera.in И http://www.postera.in Я бы попробовал curl на обоих. Также я бы дал шанс wget или любому другому поисковому роботу, например Lynx, в конечном итоге заметить разницу. Из различий часто приходит определение основной проблемы. Решение приходит естественным образом из самой первопричины.
Я никогда не предполагаю первопричину, если не подтверждаю наблюдаемыми фактами, пересекая как можно больше условий испытаний.
В надежде, что это поможет. С уважением, Филипп Воутерс (Фонтенбло / Франция [почти вся карьера в качестве поддержки инженера-программиста])