nginxのアクセスログとエラーログの確認方法【ubuntu】
nginxのログファイルがある場所
デフォルト設定では次の場所にログファイルが保存されます。
項目 | 場所 |
---|---|
アクセスログ | /var/log/nginx/access.log |
エラーログ | /var/log/nginx/error.log |
access.logの例
log
220.213.212.146 - - [23/Oct/2022:21:42:52 +0900] "GET /images_small/niku-udon/eyecatch.jpg HTTP/2.0" 200 23571 "https://k.inoto.jp/noodles/teuchi-udon.html" "Mozilla/5.0 (Linux; Android 4.4.2; LaVieTab PC-TE510S1) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/81.0.4044.138 Safari/537.36"
...
error.logの例:
log
error.logファイルには、404エラーなどが含まれます。2022/10/23 07:33:12 [crit] 52949#52949: *2381 SSL_do_handshake() failed (SSL: error:0A00006C:SSL routines::bad key share) while SSL handshaking, client: 154.89.5.78, server: 0.0.0.0:443
「SSL_do_handshake() failed」とは?
ところで、エラーログを見ていて気になったのが SSL_do_handshake() failed というエラーです。
こちらの記事 によりますと、サイバー攻撃されて失敗したログのようです。エラーになっているのでセキュリティ的には安心して良いようです。SSLプロトコルの SSLv2、SSLv3、TLSv1 はバージョンが古くて脆弱性があるため使わないようにします。 TLSv1.2 以降が望ましいとのこと。
「.well-known/traffic-advice」とは?
.well-known/traffic-advice はGoogle Chromeブラウザの先読み機能によるアクセスです。先読み機能を使っておらず禁止させたいので、.well-known/traffic-advice ファイルを作成し次のとおり記述しておきました。json
[
{"user_agent": "prefetch-proxy", "disallow": true}
]
これでエラーログに吐き出されなくなるはずです。
ちなみに、well-known関連のエラーログ抽出方法はこちら:
bash
grep ".well-known" /var/log/nginx/error.log.1 | sed -E 's/.* open\(\) "([^"]+)".*/\1/g' | uniq