WordPress上のIPアドレスが全て127.0.0.1になる事象の対応

概要

AsustorNASのADM5.0.0アップデート以降、スパムコメントやログイン履歴のIPアドレスが全て127.0.0.1になる事象が発生した

原因

copilotに聞いたところ、以下の回答が来た。

FPM/FastCGI 経由で WordPress を動かす場合、Web サーバー(Nginx や Apache)が PHP-FPM と通信するときにリモート IP が 127.0.0.1 として渡されるため、WordPress 側では常に localhost(127.0.0.1)が記録されてしまいます。


実際、phpinfo();Server APIを確認するとFPM/FastCGIになっていたので、間違いないと推測。

対策

PHPの$_SERVER['HTTP_X_REAL_IP']であれば本来のIPアドレスが取得できるので、wp-config.phpに以下の記述を追記することで解決した。

PHP
// X-Real-IP があるときは REMOTE_ADDR を置き換える
if ( ! empty( $_SERVER['HTTP_X_REAL_IP'] ) ) {
    $_SERVER['REMOTE_ADDR'] = $_SERVER['HTTP_X_REAL_IP'];
}

実際には以下の手順を取った方が良いようだが、難しかったのと↑で解決したので気になる方は調べてください

  1. Web サーバーでクライアント IP をヘッダに乗せて PHP-FPM に渡す
  2. PHP-FPM(FastCGI)設定でそのヘッダを REMOTE_ADDR として扱う
  3. 必要に応じて WordPress 側でヘッダを参照する

コメント

タイトルとURLをコピーしました