Обработка запроса 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.