Angel2S2
@Angel2S2
пингвинёнок

Apache 2.4 не видит внешний IP, хотя mod_remoteip настроен. Куда копать?

Коллеги, добрый день.

Подскажите, пожалуйста, в чем может быть дело. Второй день воюю.

Кратко: Есть два одинаковых сервера, на одном апач видит IP клиента, а на другом не видит.

Подробно:
Есть тестовый веб-сервер на openSUSE Leap 15. На нем стоит apache 2.4.33, nginx 1.14.2 и сопутствующее ПО.
В конфиге nginx прописано:
proxy_set_header HTTPS YES;
proxy_set_header Host $host:443;
proxy_set_header X-Real-IP $remote_addr;
proxy_set_header X-Forwarded-Host $host;
proxy_set_header X-Forwarded-Server $host;
proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
proxy_set_header X-Forwarded-Proto $scheme;
proxy_set_header X-Server-Address  $server_addr;


В конфиге apache:
<IfModule remoteip_module>
RemoteIPHeader X-Forwarded-For
RemoteIPTrustedProxy 127.0.0.1 10.1.1.10
RemoteIPInternalProxy 127.0.0.1 10.1.1.10
</IfModule>


Модуль remoteip включен:
# apache2ctl -M | grep remote
 remoteip_module (shared)


В apache для VirtualHost (точнее для Directory в VirtualHost) прописано:
Order allow,deny
Allow from 10.1.1.11
Allow from 10.1.1.12
Deny from all

При попытке зайти в эту Directory с указанных IP получаю Access forbidden (403 error). В логах апача соответствующая запись, что заход был с 127.0.0.1 (в LogFormat %h заменил на %a).

Так же есть "боевой" веб-сервер, конфигурация один в один с тестовым, разница только в IP адресах и имени хоста, все остальные настройки идентичны. Так вот на "боевом" все работает - и в логах пишет настоящие IP, и ограничение по IP работает.

В чем может быть дело? Куда копать?

UPD:
В php в "$_SERVER" в переменных X_FORWARDED_* записаны верные значения, IP внешние. Т.е. если я браузером обращаюсь со своего компа к скрипту
<?php
echo '<pre>';
print_r($_SERVER);
echo '</pre>';
exit;
?>

то там все значения переменных X_FORWARDED_* отображаются верно. 127.0.0.1 имеют только переменные SERVER_ADDR и REMOTE_ADDR.
Но на боевом в REMOTE_ADDR указан мой IP, т.е. 10.1.1.1. И еще на боевом нет X_FORWARDED_FOR.
  • Вопрос задан
  • 3849 просмотров
Решения вопроса 1
@pPaulp
Измените порядок директив в apache, сначала RemoteIPInternalProxy, после RemoteIPTrustedProxy:

<IfModule remoteip_module>
RemoteIPHeader X-Forwarded-For
RemoteIPInternalProxy 127.0.0.1 10.1.1.10
RemoteIPTrustedProxy 127.0.0.1 10.1.1.10
</IfModule>
Ответ написан
Пригласить эксперта
Ответы на вопрос 2
@skul
RemoteIPTrustedProxy определяет(подставляет в remote_addr) все адреса, кроме 10/8, 172.16/12, 192.168/16, 169.254/16 and 127/8 blocks.
RemoteIPInternalProxy определяет все адреса.

Т.е. вам надо удалить RemoteIPTrustedProxy, и оставить только RemoteIPInternalProxy.

https://httpd.apache.org/docs/2.4/mod/mod_remoteip...
Ответ написан
RemoteIPHeader X-Forwarded-For не должен быть случаем X-Real-IP?

RemoteIPHeader Directive / Declare the header field which should be parsed for useragent IP addresses
Ответ написан
Ваш ответ на вопрос

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

Похожие вопросы