Вернуть 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».
Другие вопросы по тегам