У меня есть настройка nginx в качестве обратного прокси для группы бэкэндов apache (LAMP), прослушивающих порт 8080.
Я также настроил все внутренние серверы. mod_rpaf.conf
файл для включения прокси-IP сервера nginx:
<IfModule mod_rpaf.c>
RPAF_Enable On
RPAF_ProxyIPs 127.0.0.1 192.168.0.1 # <- nginx server IP
RPAF_Header X-Forwarded-For
RPAF_SetHostName On
RPAF_SetHTTPS On
RPAF_SetPort On
</IfModule>
Как я могу настроить httpd.conf
отказаться от любого соединения, которое исходит не от nginx?
Я пробовал следующее:
<Directory "/var/www/html">
Order allow,deny
Allow from 192.168.0.1
Allow from 127
Deny from all
</Directory>
Но это, похоже, ограничивает доступ к самому прокси nginx, а также к любым другим IP-адресам.
Это связано mod_rpaf
пересылка клиентского IP? Если да, то как мне это обойти?
Поскольку модуль mod_rpaf перенаправляет реальный IP-адрес клиента, вы не можете заблокировать публичный доступ к внутреннему серверу apache через его собственный httpd.conf
файл.
Настройка пары правил IPtables заблокирует доступ к порту 8080 для всех (общий доступ), кроме обратного прокси-сервера nginx, не влияя на пересылку реального IP-адреса клиентов:
Бегать:
#iptables -A INPUT -p tcp --dport 8080 -s 192.168.0.1 -j ACCEPT
#iptables -A INPUT -p tcp --dport 8080 -j DROP
#service iptables save
#service iptables restart
Доступ к внутреннему серверу apache через порт 8080 теперь ограничен только прокси-сервером nginx.
Я думаю, вам следует изменить порядок ваших allow / deny_statements следующим образом:
<Directory "/var/www/html">
Order deny,allow
Deny from all
Allow from 192.168.0.1
Allow from 127
</Directory>
так как (заказ-документы)
Заказ может быть одним из:
Allow, Deny - сначала оцениваются все директивы Allow; хотя бы одно должно совпадать, иначе запрос будет отклонен. Затем оцениваются все директивы Deny. Если какие-либо совпадения, запрос отклоняется. Наконец, любые запросы, которые не соответствуют директивам Allow или Deny, по умолчанию отклоняются.
Deny, Allow - сначала оцениваются все директивы Deny; в случае совпадения запрос отклоняется, если он также не соответствует директиве Allow. Разрешены любые запросы, не соответствующие директивам Allow или Deny.
пример из документы:
Использование Order позволит вам быть уверенным, что вы действительно ограничиваете действия той группы, в которую хотите впустить, путем объединения директив Deny и Allow:
Order deny,allow
Deny from all
Allow from dev.example.com