我有一台服务器,我想在其上运行多个通配符虚拟主机,并拥有自己的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需要在首次请求站点时运行,而不是在首次加载配置文件时运行。
这有可能吗?或者,每次添加新的虚拟目录时,我是否需要以某种方式动态重写配置文件。
答案 0 :(得分:0)
我意识到我过度复杂了。我不需要使用通配符虚拟主机。由于我将使用Jenkins创建vhosts目录,我还可以让它动态创建匹配的配置文件。