Рейтинг:0

директива местоположения nginx не возвращает статус http

флаг us

Примечание. Я прочитал несколько вопросов и ответов по SO, ServerFault и т. д., но ни один из ответов, похоже, не работает.

Запуск веб-сервера AWS ec2 Ubuntu (v20.04) с базовой конфигурацией nginx (v1.18). Однако место расположения директива для /a-пользовательский путь возврат кода состояния http 200 никогда не обрабатывается и/или обрабатывается и игнорируется.

Вот конфиг:

сервер {
    слушать 80 default_server;
    слушать [::]:80 default_server;
    имя сервера _;

    местоположение / пользовательский путь {
      доступ_лог выключен;
      add_header Content-Type text/plain;
      вернуть 200 'ОК';
    }

    журнал_доступа /var/log/nginx/unknown.log;
    вернуть 412;
}

местоположение / пользовательский путь никогда не возвращает статус 200; он всегда проваливается до ответа 412. Я пробовал различные директивы местоположения, такие как:

местоположение / пользовательский путь
местоположение /a-пользовательский-путь/
location = /a-пользовательский-путь
location = /a-пользовательский-путь/

Тем не менее, все они имеют одинаковое поведение провала в 412 отклик.

Вопрос
Как я могу создать собственный путь к местоположению, который возвращает ответ 200, а все остальные запросы возвращают ответ 412?

Изменить - исправленная и рабочая конфигурация

Для всех, кто находит этот вопрос, вот окончательное рабочее решение, основанное на принятом ответе:

сервер {
    слушать 80 default_server;
    слушать [::]:80 default_server;
    имя сервера _;

    # все, кроме '/a-custom-path', получает ответ 412
    место расположения / {
      вернуть 412;
    }

    местоположение / пользовательский путь {
      вернуть 200 'ОК';
      доступ_лог выключен;
      add_header Content-Type text/plain;
    }

    журнал_доступа /var/log/nginx/unknown.log;
}
Рейтинг:1
флаг za

Потому что вещи становятся неприятными, когда вы используете возвращается не привязан к какому-либо место расположения {}. Положите вашу вернуться 412 внутри место расположения / {} и будет счастье и радость.

P.S. Когда ваш веб-сервер возвращает пустой ответ, вы должны использовать статус 204, а не 200. Оба будут работать, но 204 показывает, что вы знаете что-то.

флаг us
Спасибо. Я работаю в Windows и просто предположил, что оператор return был коротким замыканием, и вышел из конфигурации. Добавил конкретный блок `location/{ } ` и все в порядке.

Ответить или комментировать

Большинство людей не понимают, что склонность к познанию нового открывает путь к обучению и улучшает межличностные связи. В исследованиях Элисон, например, хотя люди могли точно вспомнить, сколько вопросов было задано в их разговорах, они не чувствовали интуитивно связи между вопросами и симпатиями. В четырех исследованиях, в которых участники сами участвовали в разговорах или читали стенограммы чужих разговоров, люди, как правило, не осознавали, что задаваемый вопрос повлияет — или повлиял — на уровень дружбы между собеседниками.