Nginx — логирование по времени в потоковом модуле ngx_stream_log_module
https://nginx.org/en/docs/stream/ngx_stream_log_module.html
Nginx представил модуль Stream начиная с версии 1.9.0, который поддерживает функцию обратного прокси-сервера TCP/UDP. Модуль Stream позволяет Nginx обрабатывать трафик, связанный с протоколами TCP и UDP, и подходит для таких сценариев, как прокси-сервер электронной почты и прокси-сервер базы данных. Начиная с версии 1.11.4, в Nginx также добавлена поддержка журналов сеансов Stream, предоставляющих базовую статистику соединений.
nginx-log-enhancement
。Вы можете найти последнюю версию исходного кода на странице GitHub nginx-log-enhancement. Вы можете использовать инструмент git или загрузить zip-файл напрямую.
Если вы загрузили zip-файл, разархивируйте его в любой каталог.
Перед компиляцией Nginx вам необходимо включить модуль nginx-log-enhancement в параметры компиляции Nginx.
cd /path/to/nginx/source
./configure --add-module=/path/to/nginx-log-enhancement
Выполните команды make и make install, чтобы скомпилировать и установить Nginx.
make
sudo make install
Добавьте формат журнала и ведение журнала в файле конфигурации Nginx.
http {
log_format enhanced '$remote_addr - $remote_user [$time_local] '
'"$request" $status $body_bytes_sent '
'"$http_referer" "$http_user_agent" '
'"$upstream_addr" "$upstream_response_time"';
access_log /var/log/nginx/access.log enhanced;
}
В этом примере мы используем расширенный формат log_format и используем его с директивой access_log.
После завершения настройки перезагрузите или перезапустите сервер Nginx.
sudo systemctl reload nginx
Посетите свой сайт с помощью Curl или браузера,тогда проверьNginxбревнодокумент(В этом примере это/var/log/nginx/access.log
),Убедитесь, что вы начали регистрировать расширенную краткую информацию.
С помощью этих шагов вы можете Установить и настройте модуль nginx-log-enhancement. и улучшить функцию ведения журналов Nginx. Не забудьте сделать резервную копию перед развертыванием и применить Конфигурацию к производственной среде после прохождения теста.
Формат журнала необходимо настроить в теге потока, который находится на том же уровне, что и тег сервера.
stream {
log_format proxy '$remote_addr [$time_local] '
'$protocol $status $bytes_sent $bytes_received '
'$session_time "$upstream_addr" '
'"$upstream_bytes_sent" "$upstream_bytes_received" "$upstream_connect_time"';
}
Настройте разные выходные данные журнала для разных портов
Эта конфигурация Nginx определяет два серверных блока, прослушивающих порты 9100 и 9200 соответственно.
server {
listen 9100 ssl;
access_log /opt/nginx-1.24.0/logs/tcp-ssl-access.log proxy;
ssl_certificate /opt/nginx-1.24.0/conf/cert/server.crt;
ssl_certificate_key /opt/nginx-1.24.0/conf/cert/server.key;
ssl_protocols TLSv1.1 TLSv1.2 TLSv1.3;
proxy_ssl_session_reuse on;
ssl_ciphers EECDH+CHACHA20:EECDH+CHACHA20-draft:EECDH+AES128:RSA+AES128:EECDH+AES256:RSA+AES256:EECDH+3DES:RSA+3DES:!MD5;
ssl_session_cache shared:SSL:10m;
ssl_session_timeout 10m;
proxy_pass redis;
}
server {
listen 9200;
access_log /opt/nginx-1.24.0/logs/tcp-access.log proxy; #бревно Записывать proxy_connect_timeout 60s;
proxy_timeout 60s;
proxy_pass 127.0.0.1:8100;
ssl_verify_client on;
ssl_client_certificate /opt/nginx-1.24.0/conf/cert/ca.crt;
proxy_ssl on;
ssl_certificate /opt/nginx-1.24.0/conf/cert/server.crt;
ssl_certificate_key /opt/nginx-1.24.0/conf/cert/server.key;
ssl_protocols TLSv1.1 TLSv1.2 TLSv1.3;
}
Эти два серверных блока настроены таким образом, что Nginx прослушивает разные порты, а конфигурация SSL/TLS, ведение журнала, переадресация прокси-сервера и другие настройки выполняются для разных нужд.
Результат следующий:
==> logs/tcp-access.log <==
111.201.222.10 [18/May/2024:02:37:57 +0000] TCP 200 7490 250 22.959 "127.0.0.1:8100" "250" "7490" "0.003"
111.201.222.10 [18/May/2024:02:45:38 +0000] TCP 200 7777 824 434.695 "127.0.0.1:8100" "824" "7777" "0.001"
111.201.222.10 [18/May/2024:02:45:47 +0000] TCP 200 7478 222 5.642 "127.0.0.1:8100" "222" "7478" "0.009"
==> logs/tcp-ssl-access.log <==
127.0.0.1 [18/May/2024:02:37:57 +0000] TCP 200 7490 250 22.958 "127.0.0.1:6379" "250" "7490" "0.000"
127.0.0.1 [18/May/2024:02:45:38 +0000] TCP 200 7777 824 434.650 "127.0.0.1:6379" "824" "7777" "0.000"
127.0.0.1 [18/May/2024:02:45:47 +0000] TCP 200 7478 222 5.642 "127.0.0.1:6379" "222" "7478" "0.000"