@qourshi
tg: @shoei1944

Как исправить проблему с передачей реального IP пользователя?

Имею форум на phpBB с отдельным для него Apache с PHP5.6 и у меня возникают проблемы с передачей реального IP клиента на сервер.
Схема:
Apache2 -> NGINX -> Интернет
Конфиг Apache2:
<VirtualHost *:8011>
        ServerAdmin webmaster@localhost
        DocumentRoot /var/www/forum
        ErrorLog ${APACHE_LOG_DIR}/error.log
        CustomLog ${APACHE_LOG_DIR}/access.log combined
</VirtualHost>


Код NGINX:
server {
    listen       80;
    server_name  xxx;

    root /var/www/forum;

    location / {
     index index.php;
     }
    location ~ \.php$ {
        proxy_pass   http://127.0.0.1:8011;
        proxy_set_header Host $host;
        proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
        proxy_set_header X-Forwarded-Proto $scheme;
        proxy_set_header X-Real-IP         $remote_addr;
    }
}

В итоге форум думает, что на нём сидят с 127.0.0.1
Как передать IP в данном случае?
  • Вопрос задан
  • 89 просмотров
Пригласить эксперта
Ответы на вопрос 2
@AUser0
Чем больше знаю, тем лучше понимаю, как мало знаю.
В скриптах форума поменять $_SERVER['REMOTE_ADDR'] на $_SERVER['X-FORWARDED-FOR']. Можно по условию
$client_ip = ($_SERVER['REMOTE_ADDR'] == "127.0.0.1" && !empty($_SERVER['X-FORWARDED-FOR']) && filter_var($_SERVER['X-FORWARDED-FOR'], FILTER_VALIDATE_IP, FILTER_FLAG_NO_PRIV_RANGE | FILTER_FLAG_NO_RES_RANGE))? $_SERVER['X-FORWARDED-FOR'] : $_SERVER['REMOTE_ADDR'];
Ответ написан
SignFinder
@SignFinder
Wintel\Unix Engineer\DevOps
Открываете любую статью по запросу "nginx real ip to apache", делаете, что там написано, понимая, что поле будет другое и формат лога apache придется тоже изменить.
Ответ написан
Комментировать
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Войти через центр авторизации
Похожие вопросы