The OpenNET Project / Index page

[ новости /+++ | форум | теги | ]




Версия для распечатки Пред. тема | След. тема
Новые ответы [ Отслеживать ]
Не работает allow, deny, когда apache + mod_rpaf + .htaccess, !*! sofree, 01-Окт-08, 16:51  [смотреть все]
ОС - Fedora 7.
Имеется схема nginx 0.6.31 + apache 2.2.6 + mod_rpaf 0.6
apache работает как backend, слушает на 8080 порту.
nginx слушает на 80 и всё, кроме статики отдаёт apache.
rpaf настроен. В access_log пишутся "реальные" IP.

Заметил такую странную вещь, если есть .htaccess файл и я в корень сайта кладу например
order allow,deny
allow from [ip с которого соединяюсь]
deny from all

Апач даёт
Forbidden
You don't have permission to access...
Хотя казалось бы указано allow from [ip с которого соединяюсь]

Если я лезу на апач "напрямую" через http://external_ip:8080/, то правило в .htaccess отрабатывает корректно - я вижу странчку.

Что примечательно, если .htaccess выглядит так
order allow,deny
allow from [ip с которого соединяюсь]
allow from 127.0.0.1
deny from all
и соединяюсь к nginx (а он в свою очередь к apache) через http://external_ip/ - получаю страничку! Нету никакого Forbidden!..

Т.о., прихожу к выводу что mod_rpaf не работает в конструкциях .htaccess и передаёт ip frontend`а (в моём случае 127.0.0.1).

Поискал в инете, нашёл только один подобный случай для настроек виртуал хоста:
http://www.apsis.ch/pound/pound_list/archive/2007/2007-01/11...

Кто-нибудь проверьте пожалуйста на практике, может у меня где-то ошибка.
Есть ли какие-нибудь решения? Может стоит автору rpaf обратить внимание на такой "баг".

  • apache + mod_rpaf + .htaccess, !*! HaMiL, 17:10 , 02-Окт-08 (1)
    Мне проще перекопить нашу статью с кор.википедии. На ней не один сервер сейчас работает :))
    ===============================================================================

    Итак, чтобы пофиксить проблему с реальными айпишниками клиентов при использовании связки nginx+apache2, нужн-то всего лишь поставить один модуль к апачу и прописать 3 строки в конфигах.

    Чтоб избавится от неудобства необходимо лишь доставить модуль mod_rpaf2 к Apache 2.x.x

    [root@server /]# whereis mod_rpaf2
    mod_rpaf2: /usr/ports/www/mod_rpaf2
    [root@server /]# cd /usr/ports/www/mod_rpaf2

    Дальше стандартно:

    [root@server /]# make install clean

    В httpd.conf (конфиг файл Apache) ищем строку:

    #LoadModule rpaf_module libexec/apache2/mod_rpaf.so

    Де-коментим строку (путь к .so файлу может отличаться)

    Далее в тот-же файл httpd.conf в самый низ дописываем 2 строки

    RPAFproxy_ips 127.0.0.
    RPAFEnable On

    Первая строка - это IP прокси (может быть белым IP адресом), вторая - говорит Apache, что rpaf нужно использовать. Что делает rpaf? Он из заголовка X-Forwarded-for делает REMOTE_ADDR.

    Собственно остается в конфиге nginx’а в разделе server (виртуального хоста, не в location'e Proxy-преедачи) дописать такие строки:

    proxy_set_header   Host             $host;
    proxy_set_header   X-Real-IP        $remote_addr;
    proxy_set_header   X-Forwarded-For  $proxy_add_x_forwarded_for;

    Далее перезагружаем Apache и nginx

    [root@server /]# apachectl restart
    [root@server /]# /etc/rc.d/nginx restart

    =========================================
    Всё.

    • apache + mod_rpaf + .htaccess, !*! sofree, 17:25 , 02-Окт-08 (2)
      >Мне проще перекопить нашу статью с кор.википедии. На ней не один сервер
      >сейчас работает :))
      >===============================================================================
      >
      >Итак, чтобы пофиксить проблему с реальными айпишниками клиентов при использовании связки nginx+apache2,
      >нужн-то всего лишь поставить один модуль к апачу и прописать 3 строки в конфигах.

      копипастить не надо. Сам не одну статью прочёл про это. Повторюсь, что
      это всё уже сделано и mod_rpaf установлен и ИПы нормально обрабатываются - и в скриптах php и в access_log Apache.

      А не работает в .htaccess - allow, deny директивы для ip адресов.
      Сами попробуйте, если у Вас apache 2.2 и mod_rpaf - положите .htaccess файл где пропишите deny from [ваш ip].
      Опять таки, если к backend`у обратиться "напрямую" http://ext_ip:port, то .htaccess нормально обрабатывается... Поэкспериментируйте. У меня такой баг имеет место.

      • apache + mod_rpaf + .htaccess, !*! Alex, 15:37 , 13-Окт-08 (3)
        >Сами попробуйте, если у Вас apache 2.2 и mod_rpaf - положите .htaccess
        >файл где пропишите deny from [ваш ip].
        >Опять таки, если к backend`у обратиться "напрямую" http://ext_ip:port, то .htaccess нормально обрабатывается...
        >Поэкспериментируйте. У меня такой баг имеет место.

        На 2.0 такая же проблема.
        Вы как-нибудь решили???

        • apache + mod_rpaf + .htaccess, !*! sofree, 22:23 , 13-Окт-08 (4)
          >>Сами попробуйте, если у Вас apache 2.2 и mod_rpaf - положите .htaccess
          >>файл где пропишите deny from [ваш ip].
          >>Опять таки, если к backend`у обратиться "напрямую" http://ext_ip:port, то .htaccess нормально обрабатывается...
          >>Поэкспериментируйте. У меня такой баг имеет место.
          >
          >На 2.0 такая же проблема.
          >Вы как-нибудь решили???

          Нет, не решил. Зато выяснилось, что этот баг имеет место. Думаю, автору mod_rpaf надо показать данный "баг"

          • apache + mod_rpaf + .htaccess, !*! qwerty, 16:47 , 14-Окт-08 (5)
            Apache/2.2.9 проблем нет, но 1 отличие, у меня блок deny allow описан внутри httpd.conf  


            • apache + mod_rpaf + .htaccess, !*! sofree, 20:12 , 14-Окт-08 (6)
              >Apache/2.2.9 проблем нет, но 1 отличие, у меня блок deny allow описан
              >внутри httpd.conf

              А можно с .htaccess попробовать? Всего лишь маленький файлик...

              • apache + mod_rpaf + .htaccess, !*! qwerty, 11:51 , 28-Окт-08 (7)
                >>Apache/2.2.9 проблем нет, но 1 отличие, у меня блок deny allow описан
                >>внутри httpd.conf
                >
                >А можно с .htaccess попробовать? Всего лишь маленький файлик...

                Работает нормально,

                Order deny,allow
                Deny from all
                Allow from 127.0.0.1 172.16.0.4

                пускает только с 172.16.0.4

                • apache + mod_rpaf + .htaccess, !*! sofree, 00:31 , 31-Дек-08 (8)
                  >[оверквотинг удален]
                  >>
                  >>А можно с .htaccess попробовать? Всего лишь маленький файлик...
                  >
                  >Работает нормально,
                  >
                  >Order deny,allow
                  >Deny from all
                  >Allow from 127.0.0.1 172.16.0.4
                  >
                  >пускает только с 172.16.0.4

                  Появилась возможность проверить баг. И так локальная сеть, Apache/2.2.10 (Fedora core 10 rus), ip=10.1.1.1 на котором крутится апач. Апач висит на 8080 (бэкэнд), а на 80 слушает nginx (фронтэнд)

                  И так:
                  [root@fc test]# cat /var/www/html/test/.htaccess
                  Order deny,allow
                  Deny from all
                  Allow from 10.1.1.3

                  Комп, с которого запрашиваю - 10.1.1.3.

                  Случай 1.
                  http://10.1.1.1/test/
                  Forbidden

                  You don't have permission to access /test/ on this server.
                  Apache/2.2.10 (Fedora) Server at 10.1.1.1 Port 80
                  Лог: 10.1.1.3 - - [31/Dec/2008:00:28:28 +0300] "GET /test/ HTTP/1.0" 403 281 "-" "Mozilla/5.0 (Windows; U; Windows NT 5.2; ru-RU; rv:1.8.1.17) Gecko/20080829 SeaMonkey/1.1.12"

                  Случай 2.
                  http://10.1.1.1:8080/test/
                  Index of /test
                  [ICO]    Name    Last modified    Size    Description
                  [DIR]    Parent Directory         -
                  Apache/2.2.10 (Fedora) Server at 10.1.1.1 Port 8080
                  Лог: 10.1.1.3 - - [31/Dec/2008:00:29:12 +0300] "GET /test/ HTTP/1.1" 200 688 "-" "Mozilla/5.0 (Windows; U; Windows NT 5.2; ru-RU; rv:1.8.1.17) Gecko/20080829 SeaMonkey/1.1.12"


                  Прихожу к выводу, что баг прогрессирует!

                  • apache + mod_rpaf + .htaccess, !*! Ярослав, 20:32 , 31-Июл-09 (9) +1
                    А у меня получилось победить эту проблему

                    http://binblog.ru/2009/07/apache-mod_rpaf-htaccess/

                    >[оверквотинг удален]
                    >http://10.1.1.1:8080/test/
                    >Index of /test
                    >[ICO] Name Last modified Size Description
                    >[DIR] Parent Directory   -
                    >Apache/2.2.10 (Fedora) Server at 10.1.1.1 Port 8080
                    >Лог: 10.1.1.3 - - [31/Dec/2008:00:29:12 +0300] "GET /test/ HTTP/1.1" 200 688 "-"
                    >"Mozilla/5.0 (Windows; U; Windows NT 5.2; ru-RU; rv:1.8.1.17) Gecko/20080829 SeaMonkey/1.1.12"
                    >
                    >
                    >Прихожу к выводу, что баг прогрессирует!

                    • apache + mod_rpaf + .htaccess, !*! sofree, 01:27 , 01-Авг-09 (10)
                      >А у меня получилось победить эту проблему
                      >
                      >http://binblog.ru/2009/07/apache-mod_rpaf-htaccess/
                      >

                      Вот бы хорошо, чтобы автор мода
                      http://stderr.net/apache/rpaf/
                      обратил внимание на патч и подправил исходники.

                      • apache + mod_rpaf + .htaccess, !*! vinzz, 09:15 , 15-Окт-09 (11)
                        >>А у меня получилось победить эту проблему
                        >>
                        >>http://binblog.ru/2009/07/apache-mod_rpaf-htaccess/
                        >>
                        >
                        >Вот бы хорошо, чтобы автор мода
                        >http://stderr.net/apache/rpaf/
                        >обратил внимание на патч и подправил исходники.

                        этот патч решил одну проблему, но добавил другую:
                        теперь в конструкциях наподобие "header( 'Location: /newpath/' );" апачь возвращает не domain.com/newpath, а МОЙ-IP-АДРЕС/newpath

                        МОЙ-IP-АДРЕС - это ип с которого коннект, именно клиентского компьютера на котором открыт браузер. идеи?

                        • apache + mod_rpaf + .htaccess, !*! angelina, 11:06 , 10-Дек-09 (12)
                          >этот патч решил одну проблему, но добавил другую:
                          >теперь в конструкциях наподобие "header( 'Location: /newpath/' );" апачь возвращает не domain.com/newpath,
                          >а МОЙ-IP-АДРЕС/newpath
                          >
                          >МОЙ-IP-АДРЕС - это ип с которого коннект, именно клиентского компьютера на котором
                          >открыт браузер. идеи?

                          это не поможет? mod_realip http://sysoev.ru/mod_realip/

                        • apache + mod_rpaf + .htaccess, !*! Avari, 21:21 , 21-Окт-10 (13)
                          > это не поможет? mod_realip http://sysoev.ru/mod_realip/

                          Поможет только тем, у кого апач 1.3. О чём вполне ясно написано у Сысоева. Для апача2 только mod_rpaf. Лично я категорический сторонник apache2.

                        • apache + mod_rpaf + .htaccess, !*! Kirill, 11:13 , 22-Окт-10 (14)
                          >[оверквотинг удален]
                          >>>
                          >>
                          >>Вот бы хорошо, чтобы автор мода
                          >>http://stderr.net/apache/rpaf/
                          >>обратил внимание на патч и подправил исходники.
                          > этот патч решил одну проблему, но добавил другую:
                          > теперь в конструкциях наподобие "header( 'Location: /newpath/' );" апачь возвращает не
                          > domain.com/newpath, а МОЙ-IP-АДРЕС/newpath
                          > МОЙ-IP-АДРЕС - это ип с которого коннект, именно клиентского компьютера на котором
                          > открыт браузер. идеи?

                          а этот глюк исправили?
                          нашел кто-нибудь как исправить?

                        • apache + mod_rpaf + .htaccess, !*! baddan, 14:56 , 21-Апр-11 (15)
                          > а этот глюк исправили?
                          > нашел кто-нибудь как исправить?

                          на debian работает
                          Server version: Apache/2.2.9 (Debian)
                          Server built:   Dec 11 2010 21:34:00
                          nginx version: nginx/0.6.32


                          на CentOS отказывается
                          Server version: Apache/2.2.3
                          Server built:   Jan 31 2011 17:50:30
                          nginx: nginx version: nginx/1.0.0

                          REMOTE_ADDR везде коректно правится. в логах тоже казывается правильный ip, но в centos не работает, в debian работает. в обоих практически одинаково настроены сайты. Видимо в 2.2.9 есть какието изменения которые исправляют проблему.

  • Не работает allow, deny, когда apache + mod_rpaf + .htaccess, !*! SatanaClause, 13:36 , 09-Авг-11 (16)
    Добрый день,

    только что наткнулся на эту проблему. Смотрю ничего не изменилось c того времени.

    .htaccess с кодом не работает

    order deny,allow
    deny from all
    allow from 111.111.111.111

    Решение простое, заменить mod_rpaf на mod_extract_forwarded

    1. инсталируем EPEL из http://fedoraproject.org/wiki/EPEL
    http://download.fedoraproject.org/pub/epel/5/i386/epel-relea...

    2. инсталируем mod_extract_forwarded
    yum install --enablerepo=epel mod_extract_forwarded.i386

    4. коректируем конфиг /etc/httpd/conf.d/mod_extract_forwarded.conf

    по сути он стандартный, только меняем значени MEFaccept на нужное

    MEFaccept 127.0.0.1

    все работает. :)

    >[оверквотинг удален]
    > deny from all
    > и соединяюсь к nginx (а он в свою очередь к apache) через
    > http://external_ip/ - получаю страничку! Нету никакого Forbidden!..
    > Т.о., прихожу к выводу что mod_rpaf не работает в конструкциях .htaccess и
    > передаёт ip frontend`а (в моём случае 127.0.0.1).
    > Поискал в инете, нашёл только один подобный случай для настроек виртуал хоста:
    > http://www.apsis.ch/pound/pound_list/archive/2007/2007-01/11...
    > Кто-нибудь проверьте пожалуйста на практике, может у меня где-то ошибка.
    > Есть ли какие-нибудь решения? Может стоит автору rpaf обратить внимание на такой
    > "баг".

    • Не работает allow, deny, когда apache + mod_rpaf + .htaccess, !*! AL, 15:43 , 02-Мрт-12 (17) +1
      Вы неправильно задаёте конструкцию Order. Последовательность должна быть другой и после запятой недолжно быть пробелов.

      Правильно так:
      Order Deny,Allow
      Deny From all
      Allow From 10.1.1.1

      и всё работает как надо.

      Для справки. Как обрабатываются эти дериктивы:

      Order Allow,Deny
      Сперва, проверяются все директивы Allow; по крайней мере одна должна соответствовать, или запрос отвергается. Далее, провеляются все директивы Deny. Если какие-либо соответствуют, то запрос отвергается. В конце, любой запрос, который не соответствует директиве Allow или Deny отвергается по умолчанию.

      Order Deny,Allow
      Сперва, проверяются все директивы Deny; если какая-либо соответствует, то запрос отвергается, если нет соответствия в директиве Allow. Любой запрос, который не соответствует директиве Allow или Deny пропускается.

  • Не работает allow, deny, когда apache + mod_rpaf + .htaccess, !*! baddan, 18:25 , 04-Май-12 (24)
    debian 6.0

    модуль mod_extract_forwarded не удалось скомпилить и подключить по нормальному иза ошибки какойто с прокси, в принцыпе там в исходнике правится #define, но почемуто после этого не стало работать, то что работало в centos.

    вот что получилось и работает.
    rpaf.conf
    <IfModule mod_rpaf.c>
    RPAFenable On
    RPAFsethostname On
    RPAFproxy_ips 184.xx.xx.xxx 127.0.0.1
    </IfModule>

    Nginx. 1.2
    site.net
    server {
    <------>listen   80;
    <------>server_name site.net *.site.net;

    <------>root   /home/www/tube/site.net/public_html;

    #<----->access_log /home/www/tube/site.net/log/ng-acc.log;
    <------>error_log /home/www/tube/site.net/log/ng-err.log;

                location / {
                    proxy_pass         http://184.xx.xx.xx:81;
                    proxy_redirect     default;
                    proxy_set_header   Host             $host;
                    proxy_set_header   X-Real-IP        $remote_addr;
    proxy_set_header    REMOTE_ADDR     $remote_addr;
    proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
                    client_max_body_size       500m;
                    client_body_buffer_size    128k;
                    proxy_connect_timeout      90;
                    proxy_send_timeout         900;
                    proxy_read_timeout         900;
                    proxy_buffer_size   4k;
                    proxy_buffers              4 32k;
                    proxy_busy_buffers_size    64k;
                    proxy_temp_file_write_size 64k;
                    charset         off;
                    track_uploads proxied 30s;
                }

                location ^~ /contents/videos/ {
                    flv;
                    root /home/www/tube/site.net/public_html;
                    internal;
                }

                location ^~ /contents/videos_sources/ {
                    root /home/www/tube/site.net/public_html;
                    internal;
                }

                location ^~ /contents/albums/sources/ {
                    root /home/www/tube/site.net/public_html;
                    internal;
                }

                location ^~ /contents/albums/main/700x525/ {
                    root /home/www/tube/site.net/public_html;
                    internal;
                }

                location ~* ^.+\.(gif|jpg|mpg|mp3|mpeg|avi)$ {
                    valid_referers none blocked site.net *.site.net;
                    if ($invalid_referer) {
                        return   403;
                    }
                    root /home/www/tube/site.net/public_html;
                }

        location ^~ /admin/include/get_upload_status.php  {
    <------>report_uploads                  proxied;
    #<----->upload_progress_header          hash;
    <------>upload_progress_jsonp_output;
        }
    }

    --------------------------------
    Order Allow,Deny
    с пробелом без пробелом в обратном порядке и вовсе без ordera обрабатывается одинаково.
    всем удачи.




Партнёры:
PostgresPro
Inferno Solutions
Hosting by Hoster.ru
Хостинг:

Закладки на сайте
Проследить за страницей
Created 1996-2024 by Maxim Chirkov
Добавить, Поддержать, Вебмастеру