Russian Apache Switch to English
Switch to Russian koi8-r
windows=1251
cp-866
iso8859-5
Russian Apache Как это работает Рекоммендации Где взять Как установить Как настроить Статус и поддержка
Краткий обзор FAQ Список рассылки Благодарности Поиск по серверу Powered by Russian Apache
Russian Apache mailing list archive (apache-rus@lists.lexa.ru)

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

[apache-talk] Re: [apache-talk] Предложение - mod_acce l и backend с проверкой на IP доступ



Привет всем!

> mod_realip не подходит для mod_access. Для этого лучше взять
> http://develooper.com/code/mpaf/

Спасибо!
Именно этот модуль и подсказал более элегантное решение для бекенда, на
котором установлен mod_perl

use Apache::Constants ();
sub My::ProxyRemoteAddr ($) {
my $r = shift;

    # we'll only look at the X-Forwarded-For header if the requests
    # comes from our proxy at localhost
    return Apache::Constants::OK unless ($r->connection->remote_ip eq
"127.0.0.1");

    if (my ($ip) = $r->header_in('X-Real-IP') =~ /^(\d+\.\d+\.\d+\.\d+)$/o)
{
      $r->connection->remote_ip($ip);
    }

    return Apache::Constants::OK;
}

Этот блок ставится в startup.pl для mod_perl
Далее там где вам надо, можно на весь виртуал поставить

PerlPostReadRequestHandler My::ProxyRemoteAddr

И все запросы к скриптам, к статике выполняются с remote_ip как если бы к
нему обратился напрямую клиент. В логи этого сервера также пишется IP, что
был передан X-Real-IP. Скрипты, которые берут IP из REMOTE_ADDR и
HTTP_FORWARDED_FOR также будут получать те значения, если бы клиенты
заходили на бекенд напрямую. mod_access также работает. Вообщем, ничего
лучшего не придумать :)

Для тех, кто опасается нарушения security - этот handler отрабатывается
только тогда, когда фронтенд зашел на бекенд с адреса 127.0.0.1. То есть
если клиент подставит фиктивный адрес через X-Real-IP или зайдет напрямую на
бекенд - ничего у него не получится. Если бекенд на другом IP, пусть даже
доступном из внешнего мира, надо поменять там только 127.0.0.1 на IP
фронтенда.

Разумеется, ан фронтенда надо написать:
 AccelPass / http://127.0.0.1/ [PH]
 AccelSetXRealIP on
 AccelCacheCookie all

> Игорь Сысоев
>

P.S. Ну теперь вообще наступило полное счастье в mod_accel :)

Алексей Звягин


=============================================================================
=               Apache-Talk@xxxxxxxxxxxxx mailing list                      =
Mail "unsubscribe apache-talk" to majordomo@xxxxxxxxxxxxx if you want to quit.
=       Archive avaliable at http://www.lexa.ru/apache-talk                 =






Спонсоры сайта:

[ Russian Apache ] [ Как это работает ] [ Рекомендации ] [ Где взять ] [ Как установить ] [ Как настроить ] [ Статус и поддержка ] [ Краткий обзор ] [ FAQ ] [ Список рассылки ] [ Благодарности ] [ Поиск по серверу ] [ Powered by Russian Apache ] [ Apache-talk archive ]

"Russian Apache" includes software developed by the Apache Group for use in the Apache HTTP server project (http://www.apache.org/) See Apache LICENSE.
Copyright (C) 1995-2001 The Apache Group. All rights reserved.
Copyright (C) 1996 Dm. Kryukov; Copyright (C) 1997-2009 Alex Tutubalin. Design (C) 1998 Max Smolev.