CGI 실행을 ServerName에 맞게 조정할 수 있습니까?

CGI 실행을 ServerName에 맞게 조정할 수 있습니까?

여러 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를 활성화하려면 VirtualHostcgi 관련 지시어( ScriptAlias또는 구성되어 있는 를 <Directory/>포함하는 블록 Options +ExecCGI)를 기본 서버 구성에서 대상으로 이동하세요 VirtualHost.

모듈 mod_cgi(또는 mod_cgid)은 서버에서 활성화된 경우 모든 가상 호스트에서 물론 활성화되지만 모든 가상 호스트에서 사용할 필요는 없습니다.

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

연결:

관련 정보