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

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

Debian 10하위 도메인에 대해 및 apache2및 구성이 있습니다 virtual 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 오류가 반환되어야 합니다. 이것이 당신이 요구하는 것입니까?

관련 정보