与modperl的通配符vhost

时间:2016-07-12 00:47:00

标签: apache2 vhosts mod-perl

我有一台服务器,我想在其上运行多个通配符虚拟主机,并拥有自己的modperl环境。

每个vhost都需要运行它自己的启动脚本来定义自定义包含路径。

在普通的虚拟主机配置中,我可以执行以下操作...

<VirtualHost *:80>
    ServerName web1.myserver.com

    Define ApplicationRoot /websites/web1

    DocumentRoot ${ApplicationRoot}

    PerlSetEnv PERL_DOC_ROOT ${ApplicationRoot}
    PerlOptions +Parent
    PerlPostConfigRequire /websites/lib/startup.pl
...

然后,我的startup.pl脚本可以使用PERL_DOC_ROOT环境变量动态配置自定义lib路径。

这适用于多个vhosts部分。它们各自都有自己定义的@INC,一切都能正确解析。

我是否可以通过某种方式将其转换为通配符vhost配置。我希望用户能够访问* .myserver.com,它将使用主机名来确定要使用的文档,并运行startup.pl来定义基于此文件夹的lib路径。

我知道我可以使用这样的东西......

VirtualDocumentRoot /websites/%1/

动态设置文档根目录,但如果我尝试在任何其他声明中使用%1,则无法理解。此外,startup.pl需要在首次请求站点时运行,而不是在首次加载配置文件时运行。

这有可能吗?或者,每次添加新的虚拟目录时,我是否需要以某种方式动态重写配置文件。

1 个答案:

答案 0 :(得分:0)

我意识到我过度复杂了。我不需要使用通配符虚拟主机。由于我将使用Jenkins创建vhosts目录,我还可以让它动态创建匹配的配置文件。