В моей среде я использую perlbal для перенаправления запроса на nginx. Если verify_backend включен. perbal отправит nginx запрос «OPTIONS *», но nginx ответит на него как на неверный запрос.
Согласно RFC2616:
Если Request-URI представляет собой звездочку (""), запрос OPTIONS предназначен для применения к серверу в целом, а не к конкретному ресурсу. Поскольку параметры связи сервера обычно зависят от ресурса, запрос "" полезен только как метод типа "ping" или "no-op"; он ничего не делает, кроме как позволяет клиенту проверить возможности сервера. Например, это можно использовать для проверки прокси-сервера на соответствие HTTP/1.1 (или его отсутствие).
Я думаю, что perlbal пытается отправить такой запрос, но nginx не может его обработать по умолчанию.
Когда я пытаюсь отправить запрос «OPTIONS * HTTP/1.0», я всегда получаю «HTTP 400 неверный запрос»:
127.0.0.1 - - [18.02.2013:03:55:47 +0000] "ОПЦИИ * HTTP/1.0" 400 172 "-" "-" "-"
но он работает с опцией «OPTIONS/HTTP/1.0» без запросов звездочки:
127.0.0.1 - - [18.02.2013:04:03:56 +0000] "ОПЦИИ / HTTP/1.0" 200 0 "-" "-" "-"
Как настроить nginx, чтобы он отвечал HTTP-возвратом 200, а не HTTP-возвратом 400?
Host:
? аля...OPTIONS * HTTP/1.1\r\nHost: devserver\r\n\r\n
. Согласно RFC2616, раздел 9:The set of common methods for HTTP/1.1 is defined below...
- person Basic   schedule 18.02.2013400 Bad Request
, даже нет возможности ввести заголовок. Я попытался отправить запрос параметров с заголовком хоста через telnet: ` telnet 10.1.128.97 5274 Попытка 10.1.128.97... Подключен к 10.1. 128,97. Экранирующий символ '^]'. ВАРИАНТЫ * HTTP/1.1 ‹html› ‹head›‹title›400 Bad Request‹/title›‹/head› ‹body bgcolor=white› ‹center›‹h1›400 Bad Request‹/h1›‹/center› ‹hr ›‹center›nginx/1.2.6‹/center› ‹/body› ‹/html› Соединение закрыто внешним хостом. ` - person Cody   schedule 22.02.2013