我配置了幾個 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)。從那時起,CGI被觸發透過在某條路徑中詢問domain.tld/a_path_for_a_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),出於安全考慮,我是否應該分叉該方案?
答案1
如果您只想在特定的 中啟用 CGI VirtualHost
,則將您的 cgi 特定指令(ScriptAlias
或<Directory/>
包含的區塊Options +ExecCGI
,以設定的為準)從主伺服器設定移至目標VirtualHost
。
如果在伺服器中啟用了模組mod_cgi
(或mod_cgid
),那麼它當然會在所有虛擬主機中處於活動狀態,但您不必在每個虛擬主機中都使用它。
確實,出於安全性和效能原因,大多數模組預設已停用,但在我看來,您不需要僅設定第二台伺服器,因為您需要在一個虛擬主機中使用此模組。如果您無法在其他虛擬主機中執行任何腳本(缺少ScriptAlias
/ExecCGI
或禁止存取腳本<Directory/>
),這應該足夠了。
連結: