Хорошо, вот быстрое и (очень) hacky способ сделать это. Рассказ, нет пути (что я знаю о) динамично сделать что Ваше выяснение со стандартными инструментами Apache. Дополнительные модули или код необходимы. Кто-то там, возможно, уже сделал модуль, который делает то, что Вы хотите. Я не пошел, смотря.
Установите и включите mod_perl в своей конфигурации Apache, затем поместите этот блок где угодно в Вашу конфигурацию после LoadModule для жемчуга. Это не должно быть ни в каком VirtualHost или Каталоге или чем-либо как этот.
<Perl>
use Apache2::ServerUtil qw//;
use Apache2::RequestRec qw//;
use Apache2::RequestUtil qw//;
use Apache2::Const qw/OK DECLINED/;
my $s = Apache2::ServerUtil->server;
$s->push_handlers(PerlHeaderParserHandler => sub { my($r) = @_;
if ( $r->hostname eq 'www.example.com' &&
$r->uri =~ m|^/(monitor\d+)/$| ) {
my $monitorDirectory = $1;
eval{$r->add_config([
"AuthType basic",
"AuthName 'secret $monitorDirectory'",
"AuthUserFile /path/to/user/file",
"require user $monitorDirectory"
])};
if ( $@ ) { warn $@ }
return OK;
} else {
return DECLINED;
}
});
</Perl>
В основном то, что это делает, смотрит на URL каждого запроса и если это - соответствия, вставляя некоторые правила конфигурации на лету перед этапом аутентификации и авторизации запроса. Для изменения его изменитесь www.example.com
бит, соответствие regex ^/(monitor\d+)/$
, и список директив для вставки.
Это оставит Вас с пользовательским файлом для поддержания, где имя пользователя является именем каталога от URL. Если Вы хотите многочисленных пользователей на каталог, необходимо будет использовать группы и поддержать тот файл также. Для этого, изменения require user $monitorDirectory
кому: require group $monitorDirectory
и добавьте AuthGroupFile /path/to/group/file
.
Было бы лучше, если Вы могли бы отправить свою конфигурацию прокси так, чтобы у нас была точная идея того, что могло продолжаться.
Я предполагаю однако, что, если это действительно - проблема cookie, Вы могли бы решить его при помощи ProxyPassReverseCookieDomain
и/или ProxyPassReverseCookiePath
директивы для перезаписи cookie правильно. Обратитесь к документации.