Коллеги, добрый день.
Подскажите, пожалуйста, в чем может быть дело. Второй день воюю.
Кратко: Есть два одинаковых сервера, на одном апач видит 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.