概要
nginx の error.log をテストで意図的に出力させたい場合はあると思います
そんなときにてっとり早くエラーログを出力させる方法を紹介します
なお今回は nginx コンテナを使っています
環境
- macOS 10.14.5
- docker 18.09.2
default.conf の編集
CGI 用の URI を活用します
.php
でアクセスが来たらそのままバックエンドのアプリに流しますが実際はないのでこれでエラーログが出ます
vim default.conf
location ~ \.php$ {
proxy_pass http://127.0.0.1;
}
途中他の設定もありますが省略しています
なお default.conf はコンテナ内から cp しても OK です
docker -d run nginx
docker cp 403876658f4e:/etc/nginx/conf.d/default.conf .
default.conf を使って nginx コンテナを起動
作成した default.conf を使ってコンテナを起動します
docker run -d -p 80:80 -v $(pwd)/default.conf:/etc/nginx/conf.d/default.conf nginx
動作確認
docker logs には標準出力と標準エラーのどちらも流れてきます
標準出力のみを表示する場合は
docker logs -f 403876658f4e 2> /dev/null
標準エラーのみを表示する場合は
docker logs -f 403876658f4e > /dev/null
という感じで表示を制限できます
今回はエラーログを表示させたいので下を使います
そして curl を使って以下のようにアクセスしてみましょう
curl localhost/index.php
すると以下のようにエラーログが出力されると思います
2019/07/17 01:37:16 [alert] 7#7: 1024 worker_connections are not enough
2019/07/17 01:37:16 [error] 7#7: *1021 recv() failed (104: Connection reset by peer) while reading response header from upstream, client: 127.0.0.1, server: localhost, request: "GET /index.php HTTP/1.0", upstream: "http://127.0.0.1:80/index.php", host: "127.0.0.1"
最後に
nginx の error.log のテストをしたい場合に意図的にエラーログを出力する方法を紹介しました
これ以外にも方法はあると思いますが思いつかない場合には使ってみてください
0 件のコメント:
コメントを投稿