Улучшение ведения журналов Nginx: как исключить ошибки 404 из журналов

Nginx — популярный веб-сервер с открытым исходным кодом, известный своей высокой производительностью и масштабируемостью. Он широко используется для обслуживания статического и динамического контента в Интернете. Одним из распространенных требований к администраторам веб-серверов является настройка поведения журналов Nginx. В этой статье мы рассмотрим различные методы исключения ошибок 404 из журналов Nginx, что позволит проводить более краткий и целенаправленный анализ журналов.

Метод 1: использование директивы Nginx error_log
Самый простой способ исключить ошибки 404 из журналов Nginx — использовать директиву error_log. Указав отдельный файл журнала для ошибок 404, вы можете легко отфильтровать их во время анализа журнала. Вот пример конфигурации:

http {
    # Configure the main log file
    error_log /var/log/nginx/error.log;
    # Specify a separate log file for 404 errors
    location / {
        error_log /var/log/nginx/404.log;
        error_page 404 = @404;
    }
    location @404 {
        return 404;
    }
}

Определив именованное местоположение и используя директиву error_page, мы можем вернуть собственный ответ об ошибке 404 и записать его отдельно.

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

http {
    # Configure the main log file
    access_log /var/log/nginx/access.log combined;
    # Exclude 404 errors from the main log file
    map $status $loggable {
        ~^404$ 0;
        default 1;
    }
    server {
        location / {
            access_log /var/log/nginx/access.log combined if=$loggable;
        }
    }
}

В этом примере мы определяем переменную loggableна основе кода состояния HTTP. Мы указываем, что если код состояния равен 404, переменной должно быть присвоено значение 0, что фактически исключает ее регистрацию.

Метод 3. Использование модуля ngx_http_log_module.
В более сложных сценариях можно использовать модуль ngx_http_log_moduleдля достижения детального контроля над ведением журналов. Этот модуль обеспечивает дополнительную гибкость, позволяя вам определять собственные форматы журналов и условия ведения журналов. Вот пример конфигурации:

http {
    # Configure a custom log format excluding 404 errors
    log_format custom '$remote_addr - $remote_user [$time_local] '
                      '"$request" $status $body_bytes_sent '
                      '"$http_referer" "$http_user_agent"';
    # Configure the main log file
    access_log /var/log/nginx/access.log custom if=$status != 404;
    server {
        location / {
            try_files $uri $uri/ =404;
        }
    }
}

В этом примере мы определяем собственный формат журнала под названием custom, который исключает ошибки 404. Затем мы используем директиву ifдля условной регистрации запросов на основе кода состояния.

Настройка ведения журналов Nginx для исключения ошибок 404 может значительно улучшить анализ журналов и устранение неполадок. Используя любой из вышеперечисленных методов, вы можете настроить журналы Nginx так, чтобы они фокусировались на наиболее актуальной информации. Независимо от того, решите ли вы использовать отдельные файлы журналов, условное ведение журнала или ngx_http_log_module, эти методы помогут вам оптимизировать процесс управления журналами.

Помните: понимание журналов вашего сервера имеет решающее значение для поддержания работоспособности веб-инфраструктуры и обеспечения оптимальной производительности.