最近、jetpackでの接続がすぐに切断され、twitter連携などができなくなっていた。
そのため、原因調査・対策しましたのでメモ
wp-xmlrpc.phpに接続できない⇒IPが変わっていた
wp-xmlrpc.phpは攻撃受けやすいファイルでもあるので、jetpack以外の接続拒否を行っていました。
How to add Jetpack IPs to an allowlistのjetpackのIPアドレスが変更されていたのでnginxのIPアドレスリストを変更しました。
geo $remote_addr $allowd_IP {
default no;
#JetPack設定
#192.0.64.0/18 yes; ←今までの設定
122.248.245.244/32 yes;
54.217.201.243/32 yes;
54.232.116.4/32 yes;
192.0.80.0/20 yes;
192.0.96.0/20 yes;
192.0.112.0/20 yes;
195.234.108.0/22 yes;
# ループバックIP
127.0.0.1 yes;
::1 yes;
}
nginxのmapは文字列比較であるため、IPアドレスのネットマスクまでは対応できないそうです。
そのため、geoIp2を使って対応します。GeoIP2は下記サイト参照です。
GeoIPが使えなくなっていたのでGeoIP2に変更
nginx、php-fpmを使っている場合、X-Forwarded-Portが必要
WordPressの管理画面を開き、ツール⇒サイトヘルスを見るとJetpackのエラーが発生していました。
*** is not connected.: 200 Jetpack Jetpack サポートにお問い合わせください。
想定外のサーバーポート値です。 Jetpack お使いの wp-config.php ファイルに次の記述を追加してみてください。 define("JETPACK_SIGNATURE__HTTPS_PORT", **** );
WordPress サイトヘルスの critical issue 2 つの内容より、
nginx、php-fpm を使っている場合、「X-Forwarded-Port」で対応できるとのこと。
なので、nginxに追記
server {
・・・
proxy_set_header X-Forwarded-Proto https;
proxy_set_header X-Forwarded-Host $host;
proxy_set_header X-Forwarded-Server $host;
proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
proxy_set_header X-Forwarded-Port $server_port;
・・・
}
nginxを再起動し、Jetpackの接続確認画面でwp-xmlrpc.phpが接続できることを確認しました。
雑感
毎回Jetpackに認証しているけどなんでだろうと思っていたのが解消されてよかったです。