이름 기반 가상 호스트에서 하위 도메인을 만드는 방법은 무엇입니까?


27

이름 기반 호스팅이 있습니다 my.address.com. 내 친구는 '일반'주소를 가지고 있으며 address.comSSH를 통해 액세스 할 수있는 가상 머신을 제공했습니다.

그는 또한 포트 마법을 만들어 지금은 아파치를 설치 한 후, 나는 액세스 할 수 있습니다 /var/www통해 my.address.com.

그래서 문제는 어떻게 하위 도메인을 만들 수 test.my.address.com있습니까?

Apache의 Listen Directive 에는 약간의 마법이 있어야 하지만 알아낼 수는 없습니다. 또한 Apache로 로컬 사용 가능 사이트를 만드는 방법을 알고 있지만 동일하지는 않습니다.


필요하지 않습니다 Listen. Apaches 가상 호스트를 살펴보십시오 : httpd.apache.org/docs/2.2/vhosts
— Der Hochstapler

주요 질문은 남아 있습니다-ServerName 지시문에 무엇을 쓸까요?
— scythargon

답변:


33

하위 도메인을 만들려면 몇 가지 사항을 확인해야합니다.

DNS

따라서 다른 사람이에 도달 test.my.address.com하려면 먼저 해당 이름을 가상 머신의 IP 주소로 확인할 수 있어야합니다. 어떻게 할 수 있습니까?

가장 친한 친구 는 영역에서 VM의 IP 주소 를 가리키는 A 레코드 를 만드는 것 입니다.address.commy

여태까지는 그런대로 잘됐다. 그러나 어떻 test.my습니까? 아직 항목이 없을 수 있습니다.

친구는 단순히 *.my영역에 추가 하고 동일한 IP 주소를 가리킬 수 있습니다. 그런 다음 모든 요청이 something.my.address.comVM으로 전송됩니다. 큰!

아파치 가상 호스트

VM에 도달하면 Apache는 요청을 처리하는 방법을 알아야합니다. 여기서는 Apache HTTP 서버 의 가상 호스트 기능을 사용 합니다.

나는 보통 데비안에서 실행하기 때문에에 예제 구성으로 이것을 설명 할 것이다 /etc/apache2/sites-available. 거기에 파일을 불러서 test.my.address.com정보로 채우자.

<VirtualHost *:80>
        ServerName test.my.address.com
        ServerAdmin webmaster@my.address.com

        DocumentRoot /var/www/test.my.address.com/
        <Directory />
                Options FollowSymLinks
                AllowOverride None
        </Directory>
        <Directory /var/www/test.my.address.com/>
                Options Indexes FollowSymLinks MultiViews
                AllowOverride All
                Order allow,deny
                allow from all
        </Directory>

        ErrorLog ${APACHE_LOG_DIR}/test.my.address.com.error.log

        # Possible values include: debug, info, notice, warn, error, crit,
        # alert, emerg.
        LogLevel warn

        CustomLog ${APACHE_LOG_DIR}/test.my.address.com.access.log combined
</VirtualHost>

이 파일 의 주요 설정 은 ServerName지시문 입니다. 이것은 아파치에게이 서버 를 사용할 수 있는 이름을 알려줍니다 . ServerAlias ​​지시문으로 추가 이름을 지정할 수 있습니다 .

데비안을 사용하는 경우 sudo a2ensite test.my.address.com파일을 만든 후 잊지 마십시오 sudo invoke-rc.d apache2 restart.


고마워요! :) 나는 내 역할을하고 친구에게 자신의 역할에 대해 이메일을 썼습니다. 다시 감사합니다 :)
— scythargon

@ 스키 타곤 : 나의 기쁨. 우리는 여기에 있습니다 :)
— Der Hochstapler

내 친구가 내 대답을하지 않은 동안, 제발, 제발? 작동 방식에 대해 생각한 것 : http-request for test.my.address.com로 이동 my.address.com한 다음 VM의 Apache 서버에서 처리합니다. 그러나 address.com의 DNS 서버 test.my는이 모든 것에 대해 알아야 하고에 대한 지식과 무관하게 my이유를 알고 있어야한다고 말했습니다 .
— scythargon

@ scythargon : HTTP 요청이 서버에 도달하려면 모든 클라이언트가 먼저 요청을 보내야하는 서버를 파악해야합니다. 따라서 호스트 이름이 유효해야합니다. 그렇지 않으면 "이름이 없습니다"라는 메시지가 나타납니다.
— Der Hochstapler
당사 사이트를 사용함과 동시에 당사의 쿠키 정책과 개인정보 보호정책을 읽고 이해하였음을 인정하는 것으로 간주합니다.
Licensed under cc by-sa 3.0 with attribution required.