我配置了几个 VirtualHost 条目。
<VirtualHost *:80>
ServerName subdomain1.domain.tld
[...]
DocumentRoot /var/www/html/subdomain1
[...]
</VirtualHost>
<VirtualHost *:80>
ServerName subdomain2.domain.tld
[...]
DocumentRoot /var/www/html/subdomain2
[...]
</VirtualHost>
后来因为某些原因启用了cgi(cgid)。从那时起,通过询问某些路径来触发domain.tld/a_path_for_a_cgi/
CGI 。据我所知,不依赖于为 VirtualHost 条目配置的子域。
我希望大多数子域都被禁用:
subdomain1.domain.tld/a_path_for_a_cgi/ => disallow or not to find
subdomain2.domain.tld/a_path_for_a_cgi/ => disallow or not to find
subdomain3.domain.tld/a_path_for_a_cgi/ => allow
这在 Apache 服务器中是否可行,或者我应该分叉场景以便拥有两个 Apache 服务器?由于 cgi 已禁用 (Debian Stretch),我是否应该为了安全起见分叉该场景?
如果您只想在特定的中启用 CGI
VirtualHost
,则将您的特定于 cgi 的指令(ScriptAlias
或<Directory/>
包含的块Options +ExecCGI
,以配置者为准)从主服务器配置移动到目标VirtualHost
。如果在服务器中启用了模块
mod_cgi
(或mod_cgid
),那么它当然在所有虚拟主机中都处于活动状态,但您不必在每个虚拟主机中都使用它。确实,出于安全和性能原因,大多数模块在默认情况下都被禁用,但在我看来,您不需要设置第二台服务器只是因为您需要在一个虚拟主机中使用此模块。如果您不能在其他虚拟主机中执行任何脚本(缺少
ScriptAlias
/ExecCGI
或禁止访问脚本<Directory/>
),这应该就足够了。链接: