Crayon Syntax Highlighter と起きていたトラブルの件

もふもふあげさん WordPress
この記事は約4分で読めます。
スポンサーリンク

Crayon Syntax Highlighter という WordPress 用プラグインがあって、これを利用するとプログラムのコードなどが見やすく表示されるので私も使用中。

ところがいつの頃からか、バージョンアップしたらばサイトにアクセスするだけで関連するファイル(admin-ajax.php)を呼び出すようになっておりまして。これがまた WordPress の管理用ディレクトリ配下にあるもので、ログイン中の管理者以外がアクセスすると 403 エラーを吐いていたということに最近気が付いたわけです。

管理画面以下にはアクセス制限をしているので、そこにあるファイルを呼び出そうとしても通常では 403 エラーを吐くというのは当たり前。

そのような場所にファイルを置いて、HTML ソースのヘッダで呼び出すようになったとかどういうことよ……と思いつつまずはそれを回避する為、以下のように nginx.conf に記述を追加して [01] 保存して nginx の再起動を行った。

location ~* ^/******/wp-admin/admin-ajax\.php$ {
    satisfy any;
    allow all;
}

これで今まで普通にアクセスすると 403 エラーを吐いてたものが、ステータス 200 になったということでめでたし。管理画面配下へのアクセス権がない場合に該当ファイルへアクセスすると、”0″ と書かれたドキュメントが表示されることになりました。これもなんだかもうちょっとなんとかならんのか的な気がしないでもないのだけど、エラー吐かれるよりはマシ。

ところでこの問題を調べていたとき、以下のようなエントリを発見してハッとした。

いろいろ調べてドイツ語のサイトだけど、ここ(Crayon Syntax Highlighter und .htaccess)に行き当たった。ビンゴ。wp-admin/admin-ajax.php にアクセスしようとしてるらしい。管理画面に Basic/Digest 認証をかけていると、フロントエンドからアクセスしても認証画面が出てしまう。

Crayon Syntax Highlighter 1.14 と 認証 – 今日のエラー

このブログでは nginx でサーバ構築した上で WordPress を使用しており、管理画面へのアクセスは特定の固定 IP からのアクセスであれば認証なし。特定のプロバイダからのアクセスであれば basic 認証を行うという管理方法を取っていました [02] 。ところがどこかのタイミングで、このブログへアクセスした方々から「パスワード要求されるんだけどー」というようなご指摘を受けたわけです。

指摘を受けた当初は原因が特定できず、暫定処置として nginx.conf でのベーシック認証部分をコメントアウトして対応。ただ、このままだと不便この上ないわけでいろいろ調べたら……Crayon Syntax Highlighter アップデートが関係していたと。よくよく考えれば関連性もわかったのだろうけど、そこまで頭が回っていなかった。

Crayon Syntax Highlighter の作者的にはもしかすると、WordPress の管理画面へのアクセスにはログインページがあるわけで「ログインページあるんだから管理画面へのアクセス制限なんていらんだろ」だとか思ってるのかもしれない。うーん……たぶんきっと、これが要因なのだろうな [03]

管理画面へのアクセスは固定 IP アドレスからだけにしていたので、さらに原因究明が遅れたのかもしれない。冒頭に書いたけど、認められない IP アドレスからのアクセスならエラーも出ますわ(当たり前だ!)。nginx.conf を書き換えてエラーが出ていないことを確認し、basic 認証も復活させ、Twitter にてフォロワーさんにサイトへアクセスしてもらい basic 認証画面が出ないことを確認 [04]

1度に2つの問題が解決したのはありがたい話だ。良かった良かった。

References

References
01 私の環境ではさらに追記をしないとダメなのだけけど、基本的な記述はこのようになります。
02 nginx で IP アドレス制限と basic 認証を同時に利用する | 脳無しの呟き《土鍋と麦酒と炬燵猫》』を参照してみてください。
03 個人的にはこのような仕様は好きじゃない。
04 ご協力してくださったフォロワーさんに感謝! ありがとう!
タイトルとURLをコピーしました