สัญลักษณ์แทนชื่อเซิร์ฟเวอร์ใน Apache โฮสต์เสมือนตามชื่อหรือไม่


16

ใน LAN ของเราฉันได้ตั้งค่า TLD 'ปลอม' หลายตัวในเซิร์ฟเวอร์ DNS โดยมีความตั้งใจที่จะใช้พวกเขาสำหรับการโฮสต์เสมือนที่ใช้ชื่อ Apache ฉันต้องการรวมสิ่งนี้กับ mass-virtual-hosting (เช่น VirtualDocumentRoot) บนเซิร์ฟเวอร์ Ubuntu 10.04 LAMP

อย่างไรก็ตามฉันไม่สามารถเลือก vhost ที่ถูกต้องได้!

นี่เป็นบทสรุปของการกำหนดค่า Apache:

NameVirtualHost 10.10.0.205

<VirtualHost 10.10.0.205>
   ServerName *.test
   VirtualDocumentRoot /var/www/%-3.0.%-2/test/%1/
   CustomLog /var/log/apache2/access.log vhost_combined
</VirtualHost>

<VirtualHost 10.10.0.205>
   ServerName *.dev
   VirtualDocumentRoot /var/www/%-3.0.%-2/dev/%1/
   CustomLog /var/log/apache2/access.log vhost_combined
</VirtualHost>

ชื่อโฮสต์เช่นwww.domain.com.devแก้ไขให้เป็น 10.10.0.205 อย่างถูกต้อง แต่จะเลือก vhost ด้านบนเสมอแทนที่จะเป็น vhost อันดับแรกซึ่งจะจับคู่อย่างใกล้ชิดยิ่งขึ้น

ฉันอยู่ภายใต้การแสดงผลที่ Apache จะพยายามจับคู่ ServerName ก่อนที่จะเริ่มต้นที่ vhost ด้านบนสำหรับ IP ที่กำหนด ผมทำอะไรผิดหรือเปล่า? หรือเป็นไปไม่ได้และฉันต้องใช้ IP อื่นสำหรับ TLD แต่ละอัน

apachectl -S เอาท์พุท (ตัด):

10.10.0.205:*          is a NameVirtualHost
    default server *.test
    port * namevhost *.test
    port * namevhost *.dev

คำตอบ:


40

ใช้ServerAliasแทนที่จะServerNameอยู่คนเดียว:

ServerName somename.dev

ServerAlias *.dev


2
เวอร์ชัน Apache ล่าสุดจะไม่อนุญาตให้ใช้ wildcards ใน ServerName อีกต่อไปและข้อผิดพลาดจะบอกให้คุณใช้ ServerAlias ​​แทน
Quentin Skousen

น่ากลัว นี่เป็นประเด็นที่รวดเร็วและตรงประเด็น Def ช่วยฉันประหยัดเวลา ขอบคุณ
Art Geigel

4

หากสิ่งนี้สามารถช่วยได้เพียงทำคำตอบของ Mo ให้เสร็จสมบูรณ์:

อักขระตัวแทนใน ServerAlias ​​ยังทำงานกับชื่อโดเมนบางส่วนเช่น

ServerName somename.dev

ServerAlias *-mysite.dev

มันช่วยชีวิตฉันไว้เมื่อเร็ว ๆ นี้ ^^ (เว็บไซต์หลักที่มีโดเมนย่อยสำหรับแต่ละแอปย่อยเช่นadmin-somename.dev, bo-somename.dev, api-somename.dev... )

โดยการใช้ไซต์ของเรา หมายความว่าคุณได้อ่านและทำความเข้าใจนโยบายคุกกี้และนโยบายความเป็นส่วนตัวของเราแล้ว
Licensed under cc by-sa 3.0 with attribution required.