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.
  • Вопрос задан
  • 3374 просмотра
Решения вопроса 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
Ответ написан
Ваш ответ на вопрос

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

Войти через центр авторизации
Похожие вопросы
26 апр. 2024, в 10:01
500 руб./за проект
26 апр. 2024, в 09:18
500 руб./в час
26 апр. 2024, в 06:46
1500 руб./в час