On Wed, 13 Feb 2002, Alexey Zvyagin wrote:
> Привет всем!
>
> > 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);
Если я не ошибаюсь, то это решение некорректно.
После пристального перечитывания документации по mod_realip, я
действительно нашел там, что
---
Модуль изменяет IP адрес клиента в поле r->connection->remote_ip
на адрес, заданный в заголовке "X-Real-IP" или на последний адрес,
заданный в заголовке "X-Forwarded-For".
[...skipped...]
Нужно заметить, что эта замена никак не влияет на модули mod_access и
mod_status, поскольку они используют поле r->connection->remote_addr.
---
Но тогда, видимо, его и нужно менять в Вашем модуле. А то, что меняется
сейчас, с успехом может делать и mod_realip.
Кстати - я правильно понимаю, что модули на Си работают быстрее, чем
перловые, или там какие-то хитрые механизмы по преобразованию перла в
объектный код есть?
b.r.,
[IAB22-RIPE] -= Ilya Basalaev a.k.a. Scarab. =- Phone: [+7-3832-239288]
Novosibirsk State Regional Scientific Library, Senior system administrator.
=============================================================================
= Apache-Talk@lists.lexa.ru mailing list =
Mail "unsubscribe apache-talk" to majordomo@lists.lexa.ru if you want to quit.
= Archive avaliable at http://www.lexa.ru/apache-talk =