Как сохранять POST-значения в access-логи nginx

Если есть необходимость сохранения в лог обращений к веб-серверу nginx значения, переданные через POST, то это делается довольно просто.

Добавляем в конфиг nginx’a дополнительный log_format с именем, к примеру main_post (сама переменная называется $request_body):

log_format      main_post       '$remote_addr - [$time_local] '
                                '$host "$request" $status $bytes_sent [$request_body] '
                                '"$http_referer" "$http_user_agent" '
                                '"$gzip_ratio" $upstream_response_time';

И теперь осталось только указать этот формат вторым параметром access_log:

Сразу скажу о двух важных моментах:

Если к логам сервера имеет доступ ещё кто-то, то все POST-данные из лога ему станут известны
Лог может ОЧЕНЬ быстро разбухать в размерах