Содержание

Использование X-Forwarded-For на сервере с WordPress

Настраиваем использование заголовка X-Forwarded-For в веб-сервере Apache и CMS WordPress.

В /etc/httpd/conf/httpd.conf добавляем формат логирования:

apacheconf

LogFormat "%{X-Forwarded-For}i %l %u %t \"%r\" %>s %b \"%{Referer}i\" \"%{User-Agent}i\"" proxy

Выключаем стандартное логирование:

apacheconf

# CustomLog "logs/access_log" combined

Добавляем своё правило:

apacheconf

# Combined and proxy logging
SetEnvIf X-Forwarded-For "^.*\..*\..*\..*" forwarded
CustomLog "logs/access_log" combined env=!forwarded
CustomLog "logs/access_log" proxy env=forwarded

Перезапускаем Apache:

shell-session

systemctl restart httpd.service

В /etc/wordpress/wp-config.php добавляем:

php

/** Use X-Forwarded-For */
if ( isset( $_SERVER['HTTP_X_FORWARDED_FOR'] ) ) {
       $http_x_headers = explode( ',', $_SERVER['HTTP_X_FORWARDED_FOR'] );
       $_SERVER['REMOTE_ADDR'] = $http_x_headers[0];
}

Перезапускаем Apache:

shell-session

systemctl restart httpd.service
  1. HOWTO: Log Client IP AND X-Forwarded-For IP in Apache
  2. Use X-Forwarded-For HTTP Header to Get Visitor’s Real IP Address