概要
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'];
}
実際には以下の手順を取った方が良いようだが、難しかったのと↑で解決したので気になる方は調べてください
- Web サーバーでクライアント IP をヘッダに乗せて PHP-FPM に渡す
- PHP-FPM(FastCGI)設定でそのヘッダを
REMOTE_ADDR
として扱う - 必要に応じて WordPress 側でヘッダを参照する
コメント