dynamic使用mod_perl在Vhost容器中使用URL

我们想要检索URL并在虚拟主机中实时使用它。

为了演示我的情况,我在ServerAdmin指令上放置了随机数字,

$ ServerAdmin = int(rand(100))。“loko \ @ koko.com”;

您可能知道,只有当您重新启动服务器时,才会分配此随机数,直到另一次重新启动才会更改。

这是我们想要的:如果julie.myperl.com是请求的域名,那么$ ServerAdmin = [email protected],即实时。

希望有一个解决scheme,因为这将帮助我们删除数以千计的configuration文件,并保存我们从数千个Apache重新加载。

谢谢,Devrim

这里有一些类似的情况和解决办法,

http://httpd.apache.org/docs/1.3/mod/mod_vhost_alias.html

这就是为什么要问这个问题,我们已经build立了一个API,其中的子域表示unix账户名,所以{$ user} .domain.com的variables部分必须在vhost conf中使用。 在Apache虚拟主机容器内使用variables

我回答了一个类似的问题,可能会帮助你。 基本上它是一个基于url的dynamicconfiguration。 在那个例子中,它是基于目录设置Require指令,但是稍微调整一下,它也应该做你所需要的。

看看这里: Apache中的dynamic身份validation领域

希望有所帮助。

编辑 :这应该做到这一点。 我使用server_admin直接操作服务器pipe理地址,而不是使用add_config因为add_config作用类似于<Directory>模块, ServerAdmin不允许使用。

 <Perl> use Apache2::ServerRec qw//; 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 =~ m/(.*)\.([^.]+\.\w+)$/ ) { my($subdomain,$domain) = ($1,$2); eval{ $r->server->server_admin("$subdomain\@$domain"); }; if ( $@ ) { warn $@ } return OK; } else { return DECLINED; } }); </Perl>