Получить реальный IP-адрес посетителей в Apache за Nginx обратный прокси не работает - PullRequest
1 голос
/ 27 января 2020

После 5 часов попыток решить проблему и прочитать любой учебник, который я нашел, я прошу здесь о помощи.

У меня есть Nginx Reverse Proxy Сервер, который указывает на мой Apache Веб-сервер, но на Apache я получил только IP address с Nginx reverse proxy сервера, а не посетителей ip.

Мой nginx файл прокси: /etc/nginx/sites-available/proxy.conf

proxy_pass http://MYIPADDRESS;
proxy_next_upstream error timeout invalid_header http_500 http_502 http_503 http_504;
proxy_redirect off;
proxy_buffering off;
proxy_set_header        Host            $host;
proxy_set_header        X-Forwarded-For $proxy_add_x_forwarded_for;
proxy_set_header        X-Real-IP       $remote_addr;

На Apache я добавил в /etc/apache2/apache2.conf файл:

RemoteIPHeader X-Forwarded-For

и заменил

LogFormat "%a %l %u %t \"%r\" %>s %O \"%{Referer}i\" \"%{User-Agent}i\"" combined

на

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

a2enmod remoteip также включен

Также в Nginx /var/log/nginx/access.log файле, который я получил всегда localhost IP вроде:

127.0.0.1 - - [27/Jan/2020:23:53:07 +0800] "GET...

Также попытался добавить к /etc/nginx/nginx.conf:

set_real_ip_from 127.0.0.1;
real_ip_header X-Forwarded-For

Если я сейчас запускаю на своем веб-сервере скрипт PHP в браузере:

<?php

echo 'User IP - '.$_SERVER['REMOTE_ADDR'];

?>

Я только что получил IP-адрес обратных прокси-серверов и тот же для всего сервера.

Обе серверные ОС являются Debian 9, кто-нибудь задумался? Большое спасибо!

1 Ответ

1 голос
/ 27 января 2020

Прежде всего, убедитесь, что вы установили и включили mod_remoteip apache module.

Я использую следующую конфигурацию на моем сервере.

В httpd.conf :

LoadModule remoteip_module modules/mod_remoteip.so

RemoteIPHeader X-Forwarded-For
RemoteIPInternalProxy 127.0.0.1

В nginx файле конфигурации сайта:

proxy_set_header  X-Real-IP $remote_addr;
proxy_set_header  X-Forwarded-For $http_x_forwarded_for;
proxy_set_header  X-Forwarded-Proto $scheme;
...