Корректная работа WordPress за реверс-прокси — как узнать реальные адреса посетителей
Если вы используете реверс-прокси (у меня это Caddy) для доступа к WordPress сайту, то скорее всего уже столкнулись к некорректным отображением контента при использовании протокола HTTPS. О чем я писал в этой статье — Как исправить ошибку загрузки файла(ов) CSS стилей по HTTPS в WordPress
Следующее с чем я столкнулся — это некорректное отображении IP адресов посетителей. При настройках по-умолчанию весь трафик для WordPress регистрируется как исходящий от используемого обратного прокси-сервера, независимо от того, откуда на самом деле идёт этот трафик. И это проблема для определения IP-адреса в комментариях.
То есть откуда бы не пришел посетитель, его IP адрес будет определен WordPress как адрес обратного прокси сервера и будет всегда одним и тем же для всех посетителей из любых городов и стран.
Как настроить WordPress для отображения реальных IP-адресов посетителей при использовании обратного прокси-сервера
К счастью, исправить это довольно просто. Нужно лишь немного подправить файл конфигурации WordPress, чтобы использовать заголовок X_FORWARDED_FOR, если он есть.
Для этого просто добавьте следующий код в файл wp-config.php (в базовом каталоге установки WordPress):
/** Reverse Proxy configuration Configures WordPress to show correct source IP addresses when it's behind a reverse proxy */ if(isset($_SERVER['HTTP_X_FORWARDED_FOR'])) { $list = explode(',',$_SERVER['HTTP_X_FORWARDED_FOR']); $_SERVER['REMOTE_ADDR'] = $list[0]; }
Вставить этот код нужно обязательно до строки require_once(ABSPATH . 'wp-settings.php');
. То есть не после неё.
После внесения изменений IP адреса комментаторов должны отображаться корректно.
Ранее у всех посетителей оставивших комментарий отображался единый IP адрес — это адрес реверс-прокси, в моем случае это 172.22.11.1. После внесения изменений стал отображаться реальный IP адрес посетителя (на сколько это возможно в современном мире).
Внесение данной настройки никак не влияет на IP адреса уже оставленных комментариев.
Благодарности
При написании статьи были использованы следующие источники: