buloshnik
@buloshnik
мужик

Nginx+apache+mod_rpaf неправильное определение адреса?

Суть в том, что настроил nginx, apache2, поставил mod_rpaf, настроил его. В логи пишутся правильные ip, а вот когда на странице вывожу REMOTE_ADDR, то выводится почему-то 127.0.0.1, ну и следовательно, htaccess просто блокирует папки.

Собсвенно конфиги.

Конфиг хоста:

location / {
        proxy_pass http://127.0.0.1:8080/;
        include     /etc/nginx/conf.d/proxy.conf;
}


proxy.conf

proxy_redirect              off;
proxy_set_header            Host $host;
proxy_set_header            X-Real-IP $remote_addr;
proxy_set_header            X-Forwarded-For $proxy_add_x_forwarded_for;
client_max_body_size        10m;
client_body_buffer_size     128k;
proxy_connect_timeout       90;
proxy_send_timeout          90;
proxy_read_timeout          90;
proxy_buffer_size           4k;
proxy_buffers               4 32k;
proxy_busy_buffers_size     64k;
proxy_temp_file_write_size  64k;


rpaf.conf

<IfModule rpaf_module>
        RPAFenable On
        RPAFsethostname Off
        RPAFproxy_ips 127.0.0.1 xxx.xxx.xxx.xxx
        RPAFheader X-Real-IP
</IfModule>


nginx 1.4.1, Apache 2.4.6
  • Вопрос задан
  • 10267 просмотров
Решения вопроса 1
buloshnik
@buloshnik Автор вопроса
мужик
Все же решил)))))))))
Пришлось откатываться на ubuntu 12.04, у нее вроде долгосрочная поддержка, поставил:
apt-get install apache2 php5 libapache2-mod-php5 php5-mysql mysql-server mysql-client phpmyadmin
apt-get install nginx
apt-get install apache2-prefork-dev
Настроил все. Затем :
cd /usr/local/src
wget www.stderr.net/apache/rpaf/download/mod_rpaf-0.6.tar.gz
tar xzf mod_rpaf-0.6.tar.gz
cd mod_rpaf-0.6
apxs2 -i -c -n mod_rpaf-2.0.so mod_rpaf-2.0.c
Ничего не меняя, в этой версии ubuntu все скомпилировалась сразу и без ошибок!
Ну а потом соответственно подключаю модуль, для него прописываю только это:
RPAFenable On
RPAFproxy_ips 127.0.0.1 xx.xx.xx.xx
Соответственно заменяя xx на свой внешний ip сервера
Перегружаю nginx и apache!)
Все работает!
Ответ написан
Комментировать
Пригласить эксперта
Ответы на вопрос 3
buloshnik
@buloshnik Автор вопроса
мужик
Удалил rpaf установленный из репов.
Скомпилировал сам:
apt-get install apache2-prefork-dev
wget http://www.stderr.net/apache/rpaf/download/mod_rpaf-0.6.tar.gz
tar xzf mod_rpaf-0.6.tar.gz
cd mod_rpaf-0.6
apxs2 -i -c -n mod_rpaf-2.0.so mod_rpaf-2.0.c
Перед компиляцией заменил remote_ip , remote_addr на client_ip, client_addr соответственно
ну и произвел настройку заново.
Стало еще хуже, теперь и в логи пишет 127.0.0.1
Ну неужели никто не сталкивался и помочь не может?
Ответ написан
Комментировать
AutopilotNN
@AutopilotNN
Linux / FreeBSD
Сходная проблема, но решал по-дргому
location @apache {
# v1 не всегда корректно определяется ip
# resolver 127.0.0.1;
# proxy_pass http://$host:88;
# v2 проблема Disable IP для двух ip на сервер
# proxy_pass http://127.0.0.1:88;
# v3
proxy_pass http://$server_addr:88;
...

В дополнение для apache как указано выше
RPAFproxy_ips 127.0.0.1 XXX.XXX.XXX.XXX
Ответ написан
Комментировать
@Nog
Была такая же проблема нерабочего RPAF. Устанавливал на Centos6 через yum. Как итог - не работало.
В итоге решил скомпилить модуль самостоятельно. Удалил установленный модуль через yum. Ну а дальше всё просто:
yum install httpd-devel
mkdir /tmp/222
cd /tmp/222
git clone https://github.com/gnif/mod_rpaf.git
make
make install


Тут мы установили RPAF (смотрим наличие /etc/httpd/modules/mod_rpaf.so). Далее надо его настроить.
Создаём файл /etc/httpd/conf.d/mod_rpaf.conf с содержимым:
LoadModule              rpaf_module modules/mod_rpaf.so

RPAF_Enable             On
RPAF_ProxyIPs           127.0.0.1
RPAF_SetHostName        On
RPAF_SetHTTPS           On
RPAF_SetPort            On
RPAF_ForbidIfNotProxy   Off


Вместо 127.0.0.1 можно указать список IP через пробел, с которых приходят запросы (например, добавить IP вашего сервера)

перезагружаем httpd

service httpd restart

И проверяем $_SERVER['REMOTE_ADDR']
Ответ написан
Комментировать
Ваш ответ на вопрос

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

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