POSTメソッドのデータ部分もログ出力してくれるApacheのモジュールmod_dumpost。
テスト環境
OS: CentOS7.4
Apache: 2.4.6
準備
# yum install httpd-devel # yum install gcc
mod_dumpostインストール
# git clone https://github.com/danghvu/mod_dumpost # cd mod_dumpost # make # make install
Apacheの設定ファイル編集と再起動
/etc/httpd/conf/httpd.conf
LogLevel info
# systemctl restart httpd
確認
下の例はローカルホストから実行しているが他ホストから確認しても同様の結果が得られる。
(その場合はもちろんTCP/80ポートを開放すること)
# curl http://127.0.0.1/test -X POST -d "data1" -d "data2"
/var/log/httpd/error_log
[Tue Jan 09 14:09:02.886789 2018] [:info] [pid 4042] [client 127.0.0.1:34154] "POST /test HTTP/1.1" data1&data2
ちゃんとデータ「data1&data2」がログに出力されている。
SSLの場合
SSL化した場合も同じようにPOSTのデータをログ出力できる。
# yum install mod_ssl
/etc/httpd/conf.d/ssl.conf
LogLevel info
# systemctl restart httpd
確認
# curl --insecure https://127.0.0.1/test -X POST -d "data1" -d "data2"
/var/log/httpd/ssl_error_log
[Tue Jan 09 14:19:00.910862 2018] [:info] [pid 7994] [client 127.0.0.1:55982] "POST /test HTTP/1.1" data1&data2
捕捉
画像アップロード等の大容量データを全部ログに書き出すとログファイルがすぐいっぱいになってしまうので、それを防ぐ設定があるみたい(まだ確かめてないけど)。
/etc/httpd/conf/httpd.conf
DumpPostMaxSize 1024