Обработка запроса OPTIONS в nginx - PullRequest
23 голосов
/ 23 октября 2008

В настоящее время мы используем HAProxy в качестве балансировщика нагрузки, и он регулярно делает запросы к нижестоящим блокам, чтобы убедиться, что они живы, используя запрос OPTIONS:

ОПЦИИ /index.html HTTP / 1.0

Я работаю над тем, чтобы настроить nginx как обратный прокси-сервер с кэшированием (используя ncache). По какой-то причине nginx возвращает 405, когда приходит запрос OPTIONS:

192.168.1.10 - - [22 / Oct / 2008: 16: 36: 21 -0700] "ОПЦИИ /index.html HTTP / 1.0" 405 325 "-" "-" 192.168.1.10

При прямом обращении к нижестоящему веб-серверу я получаю правильный ответ 200. Мой вопрос: как заставить nginx передать этот ответ HAProxy или как установить ответ в nginx.conf?

Ответы [ 2 ]

32 голосов
/ 08 февраля 2012

Я, вероятно, опоздал, но у меня была та же проблема, и я нашел два решения.

Сначала обманывает Nginx, что статус 405 - это на самом деле 200 OK, а затем proxy_pass его в ваш HAProxy следующим образом:

error_page 405 =200 @405;
location @405 {
    root /;
    proxy_pass http://yourproxy:8080;
}

Второе решение - просто перехватить запрос OPTIONS и создать ответ на эти запросы:

location / {
    if ($request_method = OPTIONS ) {
        add_header Content-Length 0;
        add_header Content-Type text/plain;
        return 200;
    }
}

Просто выберите, какой из них вам больше подходит.

Я написал это в сообщении в блоге , где вы можете найти более подробную информацию.

1 голос
/ 12 января 2011

В опции httpchk вы можете указать метод HTTP следующим образом:

httpchk GET http://example.com/check.php

Вы также можете использовать POST или простой URI, такой как /. У меня есть проверка PHP, так как PHP работает вне Nginx.

...