Вернуть 200 по Nginx без подачи файла
Я написал это /etc/nginx/conf.d/apply.conf
и запустил nginx.
server {
location = /hoge {
return 200;
}
}
но команда curl терпит неудачу.
curl localhost:80/hoge
Это говорит
<html>
<head><title>404 Not Found</title></head>
<body bgcolor="white">
<center><h1>404 Not Found</h1></center>
<hr><center>nginx/1.13.9</center>
</body>
</html>
и журналы
open() "/usr/share/nginx/html/hoge" failed (2: No such file or directory), client: 127.0.0.1, server: localhost, request: "GET /hoge HTTP/1.1", host: "localhost"
Я хочу просто вернуть код состояния без тела ответа или с пустым телом ответа.
Я изменился на это, но все еще не работает.
location /hoge {
return 200 'Wow';
add_header Content-Type text/plain;
}
тоже попробовал это.
location /hoge {
return 200 'Wow';
default_type text/plain;
}
2 ответа
Трудно сказать без контекста (как выглядит весь ваш конфигурационный файл nginx) из-за того, как nginx обрабатывает запрос
Конфигурационный файл, подобный следующему, должен отлично работать для того, что вы ищете:
server {
listen 80;
location /hoge {
return 200;
}
}
Однако, если в вашем конфигурационном файле есть другие блоки расположения (особенно если они основаны на регулярных выражениях), вы можете не получить ожидаемого решения. Возьмите пример этого файла конфигурации:
server {
listen 80;
location /hoge {
return 200;
}
location ~* /ho {
return 418;
}
}
Отправка запроса на curl localhost:80/hoge
вернул бы код состояния http 418 вместо 200. Это потому, что местоположение регулярного выражения совпало с точным местоположением.
Итак, длинный ответ: Трудно сказать без контекста всего используемого вами файла conf nginx. Но понимание того, как nginx обрабатывает запрос, поможет вам получить ответ.
Дополнительный ответ к сообщению Кому:
- Если ничего не возвращается, вам следует использовать «return 204» вместо «return 200»; Это полезно для ответа на метод «OPTIONS»;
- Оператор возврата должен быть последним, поэтому перед возвратом следует поместить операторы «default_type» и «add_header».