何が起きたか
まず何が起きたか整理する。
- Webサイトにアクセスできない。
- WordPress(+nginxリバースプロキシ)
- Rocket.Chat(+nginxリバースプロキシ)
- Plex media server(+nginxリバースプロキシ)
- nginxのページ
- 自宅LAN(サーバーがいるネットワーク)へアクセスできる
- サーバー機体は生きている(VPN+XRDPで見えた)
- nginxはrun(起動)している
- ローカルでチャットとメディアサーバにアクセスできる
- でもなんでか外からアクセスできない
大まかにこんな感じでしょうか。
調査開始
なんでアクセスできないのか?とりあえずnginxのアクセスログ(/var/log/nginx/access.log)とエラーログ(/var/log/nginx/error.log)を参照してみる。
なんかパーミッションがおかしい?みたい?ん?なんで?
nginxの設定ファイルを見に行く。なぜかsubdomain-ctrl.conf(/etc/nginx/site-available)の1ファイルにすべての独自設定を当てているのでこれを参照。とくに異変なし。見た感じ止まりそうな要素がなかった。一応、site-enableにシンボリックリンクいるよねとか、機能していなかったらヤだなと思ってリンク貼り直したり。が、解消せず。
異常特定と対策
調べている中でnginxを実行しているユーザーが云々という記事を発見。さすがにそれ勝手に変わらんでしょと思いながら/etc/nginx/nginx.confを確認。
なんとwww-dataと書かれていたはずの部分にはnginxと書かれているではないか。
なんで?なんかもう怖いって。仕方ないので、モロモロのディレクトリ所有者などなどchownしてなんとか復旧。いまだ正しくない設定になってる箇所もあるっぽい?nginx.confをいじった方が早かったかな…。
追記(2023年12月15日)
rebootしたらchownしたのが逆戻りして、またも502してた。面倒なのでnginx.confのuserを最初の設定に戻した。今のところ問題ないが、心配である。
原因考察
でもなんで変わったんだろう。確かに障害がおこる前にmastodonやらMisskeyを導入しようとごちゃごちゃやってはいましたが。なんかそれらに設定をいじってしまう内容が含まれてたんだろうなあ。よく見ないでコマンドのコピペばっかりやってたからヒドイ目に遭うってもんです。
これからはちゃんと理解してからコマンドを実行しよう。わからないなら試験環境を用意してそっちでやろう。本番環境でぶっつけお試しand本番はダメ!ゼッタイ!