nginxのアクセスログとエラーログの確認方法【ubuntu】

nginxのアクセスログとエラーログの確認方法【ubuntu】
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://kitchen-note.fun/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
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
error.logファイルには、404エラーなどが含まれます。

「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

関連記事

最後までご覧いただきありがとうございます!

▼ 記事に関するご質問やお仕事のご相談は以下よりお願いいたします。
お問い合わせフォーム