여러 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
)은 서버에서 활성화된 경우 모든 가상 호스트에서 물론 활성화되지만 모든 가상 호스트에서 사용할 필요는 없습니다.
보안 및 성능상의 이유로 대부분의 모듈이 기본적으로 비활성화되어 있는 것은 사실이지만, IMO에서는 하나의 가상 호스트에 이 모듈이 필요하기 때문에 두 번째 서버를 설정할 필요가 없습니다. 다른 가상 호스트에서 스크립트를 실행할 수 없는 경우( 스크립트에 대한 액세스가 없거나 금지된 경우 ScriptAlias
) 충분합니다 .ExecCGI
<Directory/>
연결: