インフラブログ

とあるWEBサイトのインフラを構築運用するメモ

NginxでPOSTデータをログに出力する

POSTのデータもログにとっておいたほうが後の調査にも役立つだろうと思い、設定をしておきます。nginxの場合、プロキシしている前提になりますが、location内にもaccess_logを書くことで$request_bodyからPOSTデータが拾えるようです。一応リクエストのボディの最大サイズを少なく設定しておきます。

  • log formatにrequest_bodyを追加
    log_format ltsv 'time:$time_local\t'
                    'msec:$msec\t'
                    ・・・
                    'request_body:$request_body';
  • location内にaccess_logディレクティブを書く
  location / {
    ...
    access_log /var/log/nginx/staging.example.com.access_log ltsv;
  
    proxy_pass http://staging_puma; 
    ...
  }
  • リクエストボディのサイズを制限(デフォルトだと1M)
client_max_body_size 1000;