วิธีสร้างโดเมนย่อยบน virtualhost แบบใช้ชื่อ


27

ฉันมีชื่อที่ใช้โฮสติ้ง, my.address.comช่วยให้เรียกว่า เพื่อนของฉันมีที่อยู่ 'ธรรมดา' address.comและให้เครื่องเสมือนที่ฉันสามารถเข้าถึงผ่าน SSH

นอกจากนี้เขายังทำมายากลบางคนที่มีพอร์ตและตอนนี้หลังจากที่ติดตั้ง Apache ฉันสามารถเข้าถึงผ่าน/var/wwwmy.address.com

ดังนั้นคำถามคือฉันจะสร้างโดเมนย่อยได้test.my.address.comอย่างไร

ควรมีเวทมนต์กับApache's Listen Directiveแต่ฉันไม่สามารถเข้าใจได้ นอกจากนี้ฉันรู้วิธีสร้างเว็บไซต์ที่มีในท้องถิ่นด้วย Apache แต่มันไม่เหมือนกัน


คุณไม่จำเป็นต้องListenไปดูโฮสต์เสมือน Apaches: httpd.apache.org/docs/2.2/vhosts
Der Hochstapler

คำถามหลักยังคงอยู่ - จะเขียนอะไรในคำสั่ง ServerName?
scythargon

คำตอบ:


33

เพื่อให้สามารถสร้างโดเมนย่อยได้คุณจะต้องแน่ใจว่ามีหลายสิ่ง:

DNS

ดังนั้นคนอื่น ๆ สามารถเข้าถึงtest.my.address.comพวกเขาต้องสามารถแก้ไขชื่อนั้นเป็นที่อยู่ IP ของเครื่องเสมือนของคุณ จะทำอย่างไร?

สิ่งที่เพื่อนของคุณทำไปแล้วคือการสร้างระเบียน Aในaddress.comโซนซึ่งชี้myไปยังที่อยู่ IP ของ VM ของคุณ

จนถึงตอนนี้ดีมาก แต่เกี่ยวกับtest.myอะไร มันอาจยังไม่มีรายการ

เพื่อนของคุณสามารถเพิ่ม*.myในโซนได้เช่นกัน (และชี้ไปที่ที่อยู่ IP เดียวกัน) จากนั้นคำขอทั้งหมดsomething.my.address.comจะถูกส่งไปยัง VM ของคุณ ที่ดี!

Apache โฮสต์เสมือน

เมื่อถึง VM ของคุณ Apache ต้องรู้วิธีจัดการกับคำขอ นี่คือที่เราใช้คุณสมบัติโฮสต์เสมือนของเซิร์ฟเวอร์ Apache HTTP

ฉันมักจะทำงานบน Debian /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 สิ่งนี้บอก Apache ภายใต้ชื่อเซิร์ฟเวอร์นี้ที่ควรใช้งานได้ ชื่อเพิ่มเติมจะได้รับกับคำสั่ง ServerAlias

ในกรณีที่คุณกำลังใช้ Debian เช่นกันไม่ลืมที่จะหลังจากที่คุณสร้างไฟล์และsudo a2ensite test.my.address.comsudo invoke-rc.d apache2 restart


ขอบคุณมาก! :) ฉันทำส่วนของฉันและเขียนอีเมลถึงเพื่อนเกี่ยวกับส่วนของเขา ขอขอบคุณอีกครั้ง :)
scythargon

@scythargon: ความสุขของฉัน เราอยู่ที่นี่เพื่อช่วยเหลือ :)
Der Hochstapler

ในขณะที่เพื่อนของฉันไม่ตอบฉันคุณได้ไหม สิ่งที่ฉันคิดเกี่ยวกับการทำงาน: http- ขอtest.my.address.comไปmy.address.comแล้วเซิร์ฟเวอร์ Apache ของฉันบน VMจัดการมัน แต่คุณบอกว่า DNS เซิร์ฟเวอร์ที่ address.com ควรรู้เกี่ยวกับtest.myก่อนที่ทั้งหมดนี้และเป็นอิสระความรู้เกี่ยวกับmyทำไม?
scythargon

@scythargon: สำหรับคำขอ HTTP ใด ๆ ที่จะไปถึงเซิร์ฟเวอร์ของคุณไคลเอ็นต์ใด ๆ ก่อนอื่นจะต้องคิดออกว่าจะต้องส่งเซิร์ฟเวอร์ใด ดังนั้นชื่อโฮสต์จะต้องถูกต้อง ไม่เช่นนั้นพวกเขาจะถูกบอกว่า "ไม่มีชื่อนั้น"
Der Hochstapler
โดยการใช้ไซต์ของเรา หมายความว่าคุณได้อ่านและทำความเข้าใจนโยบายคุกกี้และนโยบายความเป็นส่วนตัวของเราแล้ว
Licensed under cc by-sa 3.0 with attribution required.