하위 도메인용 Debian 10 apache2 가상 호스트

하위 도메인용 Debian 10 apache2 가상 호스트

나는 하위 도메인을 구성하고 있습니다 Debian 10. 기본 도메인 구성:apache2virtual hosts

<VirtualHost *:80>
    ServerName system.com
    ServerAlias system.com
    ServerAdmin webmaster@localhost
    DocumentRoot /var/www/system.com
    
    <Directory /var/www/system.com>
        Options -Indexes +FollowSymLinks
        AllowOverride All
    </Directory>
    
    ErrorLog ${APACHE_LOG_DIR}/error.log
    CustomLog ${APACHE_LOG_DIR}/access.log combined
    
</VirtualHost>

가상 호스트의 하위 도메인 구성의 경우:

<VirtualHost *:80>
    ServerName api.system.com
    ServerAlias api.system.com
    ServerAdmin webmaster@localhost
    DocumentRoot /var/www/api.system.com
    
    <Directory /var/www/api.system.com>
        Options -Indexes +FollowSymLinks
        AllowOverride All
#       Order Allow,Deny
#       Allow from All
    </Directory>

    
    ErrorLog ${APACHE_LOG_DIR}/error.log
    CustomLog ${APACHE_LOG_DIR}/access.log combined
</VirtualHost>

이제 브라우저에 system.com을 입력하면 system.com 디렉토리의 index.html이 표시됩니다. api.system.com을 입력하면 api.system.com 폴더에 index.html이 표시됩니다.

명령 출력 sudo apache2ctl -S::

my@server088331:/etc/apache2/sites-available$ sudo apache2ctl -S
VirtualHost configuration:
*:80                   is a NameVirtualHost
         default server api.system.com (/etc/apache2/sites-enabled/api.system.conf:1)
         port 80 namevhost api.system.com (/etc/apache2/sites-enabled/api.system.conf:1)
                 alias api.system.com
         port 80 namevhost phpmyadmin.system.com (/etc/apache2/sites-enabled/phpmyadmin.conf:1)
                 alias phpmyadmin.system.com
         port 80 namevhost system.com (/etc/apache2/sites-enabled/system.conf:1)
                 alias system.com
ServerRoot: "/etc/apache2"
Main DocumentRoot: "/var/www/html"
Main ErrorLog: "/var/log/apache2/error.log"
Mutex default: dir="/var/run/apache2/" mechanism=default
Mutex mpm-accept: using_defaults
Mutex watchdog-callback: using_defaults
PidFile: "/var/run/apache2/apache2.pid"
Define: DUMP_VHOSTS
Define: DUMP_RUN_CFG
User: name="www-data" id=33
Group: name="www-data" id=33

모든 것이 괜찮아 보이지만 하위 도메인에 문제가 있습니다. api.system.com을 입력하면 api.system.com 디렉터리에서 index.html의 콘텐츠를 가져옵니다. 하지만 예를 들어 api55.system.com을 입력하면 api.system.com에서 index.html도 가져옵니다. api41.system.com 등에 대해서도 동일한 결과가 나타납니다. 이러한 도메인이 존재하지 않고 이러한 도메인에 대한 가상 호스트에 구성이 존재하지 않지만

특정 도메인에 대해서만 index.html을 가져오도록 가상 호스트를 구성하려면 어떻게 해야 합니까? 두 번째 도메인을 추가하면 해당 하위 도메인에 대해 가상 호스트에 할당된 폴더에서만 파일을 가져와야 하기 때문입니다.

답변1

나는 당신이 탐색하고 있는 모든 호스트가 동일한 IP 주소를 가지고 있다고 가정합니다. 아마도 이것이 도움이 될 것입니다

RewriteEngine on
RewriteCond   %{HTTP_HOST} !^api.system.com
RewriteRule ^ - [L,R=404]

내 시스템에서 테스트하지는 않았지만 api.system.com 이외의 URL을 탐색할 때 404 오류가 반환되어야 합니다. 이것이 당신이 요구하는 것입니까?

관련 정보