Обработка запроса OPTIONS в nginx

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

OPTIONS/index.html HTTP/1.0

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

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

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

Ответы

Ответ 1

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

Сначала обманывает 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;
    }
}

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

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

Ответ 2

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

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

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