我们希望实时检索 URL 并在我们的虚拟主机中使用它。
为了证明我的观点,我在 ServerAdmin 指令中放置了随机数,
$ServerAdmin = int(rand(100))。“loko\@koko.com”;
您可能知道,仅当您重新启动服务器时才会分配此随机数,并且在再次重新启动之前不会改变。
这是我们想要的:如果 julie.myperl.com 是请求的域,那么 $ServerAdmin = [电子邮件保护],也就是实时的。
希望有一个解决方案,因为这将帮助我们删除数千个配置文件,并节省我们数千次 apache 重新加载的时间。
谢谢,Devrim
以下是类似的情况和解决方案,
http://httpd.apache.org/docs/1.3/mod/mod_vhost_alias.html
这就是为什么要问这个问题,我们已经建立了一个 API,其中子域表示 unix 帐户名称,因此必须在 vhost conf 中使用 {$user}.domain.com 的变量部分。 在 Apache 虚拟主机容器中使用变量
答案1
我之前回答过一个类似的问题,可能对你有帮助。基本上,它是 perl 的一部分,可以根据 url 进行任何类型的动态配置。在该示例中,它根据目录设置了 Require 指令,但只需进行一点点调整,它应该也能满足您的需要。
请看这里:Apache 中的动态身份验证领域
希望有所帮助。
编辑:这应该可以做到。我过去常常server_admin
直接操纵服务器管理员地址,而不是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>