コトの発端
ある日、このブログのアクセス数が異常に少ないことに気が付いたので自分でアクセスしてみたらERR_SSL_PROTOCOL_ERRORがが表示されて接続できなくなっていた。
ERR_SSL_PROTOCOL_ERRORはSSL関連のエラーで原因が多岐にわたるためログを確認するのがよし。(あまりにも要領を得ない解説サイトが多いので。。。)
結論
Nginxが起動していなかった。代わりになぜかApacheが起動していた。Apacheを落とし、Nginxを起動することで復旧した。
こう書くとクソみたいな原因だったけど、Nginxが起動していなかった理由、SSL関連のエラーとして表示されていた理由について下記に述べていく。
Nginxが起動していなかった理由
80番ポートがすでに使用されていたため。
特定した方法
アクセスログを確認したところ、4:00ごろからピタッと記録が止まっていた。
# アクセスログの場所
/var/log/nginx/access.log
ちょうど自動更新による再起動がシステムにより通知されていたのでOS再起動時にNginxの起動に失敗したと推定した。
# 下記コマンドにてステータスを調べるとfaild表示
sudo systemctl status nginx
エラーログを確認したところ、Nginx起動時に80番ポートのバインドに失敗したというエラー発生していた。
2024/04/22 04:00:21 [emerg] 896#896: bind() to 0.0.0.0:80 failed (98: Unknown error)
2024/04/22 04:00:21 [emerg] 896#896: bind() to [::]:80 failed (98: Unknown error)
2024/04/22 04:00:21 [emerg] 896#896: bind() to 0.0.0.0:80 failed (98: Unknown error)
2024/04/22 04:00:21 [emerg] 896#896: bind() to [::]:80 failed (98: Unknown error)
2024/04/22 04:00:21 [emerg] 896#896: bind() to 0.0.0.0:80 failed (98: Unknown error)
2024/04/22 04:00:21 [emerg] 896#896: bind() to [::]:80 failed (98: Unknown error)
2024/04/22 04:00:21 [emerg] 896#896: bind() to 0.0.0.0:80 failed (98: Unknown error)
2024/04/22 04:00:21 [emerg] 896#896: bind() to [::]:80 failed (98: Unknown error)
2024/04/22 04:00:21 [emerg] 896#896: bind() to 0.0.0.0:80 failed (98: Unknown error)
2024/04/22 04:00:21 [emerg] 896#896: bind() to [::]:80 failed (98: Unknown error)
2024/04/22 04:00:21 [emerg] 896#896: still could not bind()
ほかのソフトが80番ポートを使用していると考え、ポートを使用しているプロセスを確認した。
sudo lsof -i:80
COMMAND PID USER FD TYPE DEVICE SIZE/OFF NODE NAME
apache2 826 root 4u IPv6 20200 0t0 TCP *:http (LISTEN)
apache2 879 www-data 4u IPv6 20200 0t0 TCP *:http (LISTEN)
apache2 880 www-data 4u IPv6 20200 0t0 TCP *:http (LISTEN)
apache2 881 www-data 4u IPv6 20200 0t0 TCP *:http (LISTEN)
apache2 882 www-data 4u IPv6 20200 0t0 TCP *:http (LISTEN)
apache2 884 www-data 4u IPv6 20200 0t0 TCP *:http (LISTEN)
apache2 1971 www-data 4u IPv6 20200 0t0 TCP *:http (LISTEN)
apache2 2851 www-data 4u IPv6 20200 0t0 TCP *:http (LISTEN)
apache2 4210 www-data 4u IPv6 20200 0t0 TCP *:http (LISTEN)
なぜかApacheが起動しており、それが80番ポートをおさえていたようだった。
自動起動も有効になってるっぽい。
sudo systemctl is-enabled apache2
enabled
解決編
Apacheの自動起動を無効(disable)に設定して再起動で復旧。
sudo systemctl disable apache2
sudo reboot
(apache終了とNginx起動でもよい気がする。。。)
ApacheによってWEBサーバ自体は生きてるけど、SSLは設定していないからERR_SSL_PROTOCOL_ERRORがでたのかな?
いつもの
記事の内容は無保証です。