Nginx+fastCGIのWordPressが急に404 (13: Permission denied) になって回復した話

kusanagi環境で普通に運用していたWordPressが、ある日突然404エラーで表示できなくなった。
特にアクセスが集中したということもないし、作業もしていない。そもそもログインもしていないのに、急にWeb監視に引っかかるようになった。

取り急ぎNginxのログを見てみると
2018/02/19 10:56:22 [error] 122035#0: *110131 FastCGI sent in stderr: “Primary script unknown” while reading response header from upstream, client: 192.111.222.333, server: www.dacelo.info, request: “GET / HTTP/1.1”, upstream: “fastcgi://127.0.0.1:9000”, host: “www.dacelo.info”

こんなエラーを吐いている。調べてみると、 “Primary script unknown” は、セットアップ時にNginxのconfの書き方でパスが違ったりすると発生するらしい。しかしこのサーバはこれまで普通にWordPressを動かしていたのだ。少ない可能性として、ある時にNginxのConfを書き換えた後に再起動はしないまま忘れていて、それが今日、何か負荷が高まったとかで自動強制再起動して、それで改めてエラーになった、というもの。でもログを見てみても、サーバ、Nginxとも再起動したような形跡はない。

とりあえずNginXを再起動してみる。困ったときの再起動だ。

252 2018/02/19 12:03:15 [crit] 26044#0: *1 open() “/home/kusanagi/dacelo/DocumentRoot/wp-login.php” failed (13: Permission denied), client: 192.112.200.300, server: www.dacelo.info, request: “GET /wp-login.php HTTP/1.0”, host: “www.dacelo.info”

広告

すると、こんな感じでひたすら(13: Permission denied)のエラーを吐くようになった。エラーページは、再起動前はphp-fpmの404エラー画面だったが、Nginxのエラー画面に切り替わった。まあ結局404だ。

このエラーは、ネットの声を調べてみると、「SeLinuxをオフにしたら直った」と言うものが多い。しかし、くどいようだがこのサーバはさっきまで普通にWordPressを動かしていたのだ。念のためSELinuxを見てみたけど、最初からオフになっていた。

次に、一つ上の親ディレクトリに書き込み権限がない、というもの。うーん。とりあえず一つ上を777にしてみたけど、何も変わらない。

やけくそになって、WordPressのあるDocumentRootも、その更に上のホームディレクトリ(/home/kusanagi/)も777にして、Nginxをリロードしてみたら…。直った!

権限を少しずつ削っていった結果、
home/ 755
└kusanagi/ 711
 └SITE_NAME/ 711
  └DocumentRoot/ 711
にする、つまりグループにもxを与えると大丈夫ということがわかった。

よく考えてみると、一昨日くらいにhttpdの所属グループを増やしたことがあったけど、その時間違えて減らしてしまったのかもしれない。しかしそれにしたって、影響が時間差すぎる…。

まあこんなケースも有るということで、報告を終わる。

About: dacelo


Leave a Reply

Your email address will not be published. Required fields are marked *