Я настроил Apache для отправки ответа 200 без обслуживания какого-либо файла с этой строкой конфигурации
Redirect 200 /hello
Могу ли я сделать это с помощью Nginx? Я не хочу обслуживать файл, я просто хочу, чтобы сервер ответил 200 (я просто регистрирую запрос).
Я знаю, что могу добавить индексный файл и добиться того же, но выполнение этого в конфигурации означает, что на одну вещь меньше, что может пойти не так.
Да, ты можешь
location / {
return 200 'gangnam style!';
# because default content-type is application/octet-stream,
# browser will offer to "save the file"...
# if you want to see reply in browser, uncomment next line
# add_header Content-Type text/plain;
}
Вам действительно нужно использовать 204, поскольку Nginx не разрешит 200 без тела ответа. Чтобы отправить 204, вы просто используете директива возврата к return 204;
в соответствующем месте.
Что касается определений кода состояния, я считаю, что вы хотите, чтобы это было 204, а не 200. 200 должны быть с ресурсом в ответе, иначе я бы подозревал, что это сбивает с толку большинство здравомыслящих браузеров. Другой, который вы можете использовать, - 304, он предназначен для кэшированного содержимого.
Чтобы завершить ответ @Martin Fjordval, будьте осторожны, если вы используете такую конфигурацию для проверки работоспособности.
Хотя 204
Код HTTP семантически идеален для проверки работоспособности (индикация успеха без содержимого), некоторые службы делают не Считайте это успехом.
А именно, у меня была проблема с Балансировщики нагрузки Google Cloud.
Если вы хотите вернуть форматированный текст html, без обслуживания файла HTML:
location \ {
default_type text/html;
return 200 "<!DOCTYPE html><h2>gangnam style!</h2>\n";
}
Если вы хотите вернуть текст без формата html, как указывает ответ:
location \ {
add_header Content-Type text/plain;
return 200 'gangnam style!';
}
А если вы просто хотите вернуть 200:
location \ {
return 200;
}
Просто запомните: location
блоки входят внутрь server
блоки. Вот док для получения дополнительной информации.
P.S .: У меня аналогичная конфигурация (форматированный html) работает на множестве серверов.