Назад | Перейти на главную страницу

Как вывести переменную в лог nginx для отладки

Я тестирую nginx и хочу вывести переменные в файлы журнала. Как я могу это сделать и в какой файл журнала он попадет (доступ или ошибка).

Вы можете отправлять значения переменных nginx через заголовки. Удобно для разработки.

add_header X-uri "$uri";

и вы увидите в заголовках ответов вашего браузера:

X-uri:/index.php

Иногда я делаю это во время локальной разработки.

Это также удобно, чтобы сообщить вам, выполняется ли подраздел или нет. Просто посыпьте им свои предложения, чтобы увидеть, используются ли они.

location ~* ^.+.(jpg|jpeg|gif|css|png|js|ico|html|xml|txt)$ {
    add_header X-debug-message "A static file was served" always;
    ...
}

location ~ \.php$ {
    add_header X-debug-message "A php file was used" always;
    ...
}

Поэтому посещение URL-адреса вроде http://www.example.com/index.php вызовет последний заголовок при посещении http://www.example.com/img/my-ducky.png вызовет предыдущий заголовок.

Вы можете вернуть простую строку как HTTP-ответ:

location /
{
    return 200 $document_root;
}

Обратите внимание, что вам необходимо посетить страницу, заканчивающуюся на .html если вы не хотите менять заголовки страницы.

Вы можете установить собственный формат журнала доступа, используя log_format директива, которая регистрирует интересующие вас переменные.

Другой вариант - включить эхо-модуль когда вы собираете nginx или устанавливаете OpenResty который представляет собой nginx в комплекте с кучей расширений (например, echo.)

Затем вы можете просто добавить в свою конфигурацию такие утверждения, как:

echo "args: $args"