WordPress + Nginxの環境にJetPackを入れた際のトラブルシューティング
当サイトはお名前.comのVPSでWordPress + Nginxの環境によって動いています。ブログ更新時に、自動で各種ソーシャルメディアに投稿できるプラグイン「Jetpack」をこの環境に入れようとしたのですが、かなり苦戦してしまいました。その際にどのように解決すれば良いのかのヒントになればとメモしておきます。
スポンサーリンク
連携できない問題
インストールは問題なく出来るが、Jetpack(WordPress.com)と連携できない・・・というのが悩み。
Jetpackの追加でトラブルことは少ないと思いますが、
管理画面の「プラグイン」から「新規追加」でJetpackを追加し、有効化したのですが「WordPressと連携」を押すと「405」とエラーが表示されてしまいます。
サイトを色々回って調べて見たところWordPress.comが「xmlrpc.php」にアクセスすることで連携するようなのですが、Nginxの設定で「xmlrpc.php」へのアクセスは遮断している状態である事が分かりました。
なぜ遮断していたかというと、この「xmlrpc.php」は管理画面以外からもAPIを使って記事の投稿などができるソースファイルで、このファイルへアタックすることでサイトの乗っ取りやサーバの踏み台にしてしまうことができるため、このような設定になっているようでした。
Nginxの設定
ブロックされる状態の設定ファイルはこのようになっていました。
server {
・
・
・
location = /xmlrpc.php {
deny all;
access_log off;
log_not_found off;
}
・
・
・
この設定ではxmlrpc.phpに対してアクセスはすべて禁止しアクセスログは出さないようになっています。
deny all;というのがアクセス禁止にしている文なのでこれをコメントアウトし、Nginxをrestartさせます。
server {
・
・
・
location = /xmlrpc.php {
#deny all;
access_log off;
log_not_found off;
}
・
・
・
この状態でJetpackの「WordPressと連携」ボタンを押すと、今度は「403」エラーが発生しました。
エラー内容は変わりましたが、アクセスブロックを解除したにもかかわらず再度エラーになったのでかなり混乱してしまいました。
もう訳がわからなかったので、一旦、xmlrpc.phpをすべてコメントアウトすることに。
server {
・
・
・
#location = /xmlrpc.php {
# deny all;
# access_log off;
# log_not_found off;
# }
・
・
・
コメントアウトすることで無事「Jetpack」と連携することができました。
ソーシャルメディアとの連携
記事投稿時にTwitterやGoogle+へ投稿するには「Jetpack」の設定から「Engagement」を選択し「共有」から設定できます。
ここで連携するときもxmlrpc.phpへWordpress.comからアクセスがあるようなのでエラーが発生してまいました。
今度は-32300というエラーコードが表示されました。
Worpressの連携は405エラーが表示されWebサーバが出力するエラーぽく見えてましたが、今度はJetpackがエラーをキャッチしてエラーコードを吐いてしまっているように見えます。
また、Nginxの設定からxmlrpc.xmlの部分をコメントアウトすることにしました。
すると・・・
この状態でなんとか連携することができました。テスト投稿も無事成功で一安心。
連携できたあとはコメントを外して元の状態に戻してあります。
最後に補足ですが、Worpress.comからのアクセスは192.0.64.0/18の範囲でアクセスが来るので、このIPの範囲をアクセス許可することでいちいちコメントアウトする必要はありません。