ประกาศหลายพอร์ตสำหรับ VirtualHosts เดียวกัน


35

ประกาศหลายพอร์ตสำหรับ VirtualHosts เดียวกัน:

SSLStrictSNIVHostCheck off
# Apache setup which will listen for and accept SSL connections on port 443.
Listen 443
# Listen for virtual host requests on all IP addresses
NameVirtualHost *:443

<VirtualHost *:443>
  ServerName domain.localhost
  DocumentRoot "/Users/<my_user_name>/Sites/domain/public"
  <Directory "/Users/<my_user_name>/Sites/domain/public">
    Order allow,deny
    Allow from all
  </Directory>

  # SSL Configuration
  SSLEngine on
  ...
</VirtualHost>

ฉันจะประกาศพอร์ตใหม่ ('ฟัง', ServerName, ... ) สำหรับ 'domain.localhost' ได้อย่างไร

หากฉันเพิ่มรหัสต่อไปนี้ apache จะทำงาน (มากเกินไป) สำหรับโดเมนย่อยอื่น ๆ ทั้งหมดของ 'domain.localhost' (subdomain1.domain.localhost, subdomain2.domain.localhost, ... ):

<VirtualHost *:80>
  ServerName pjtmain.localhost:80
  DocumentRoot "/Users/Toto85/Sites/pjtmain/public"
  RackEnv development
  <Directory "/Users/Toto85/Sites/pjtmain/public">
    Order allow,deny
    Allow from all
  </Directory>
</VirtualHost>

3
เพียงเพื่อทราบ คุณไม่สามารถเข้าร่วม https และโฮสต์ที่ไม่ใช่ https เป็นโฮสต์เสมือนได้ <VirtualHost *: 80 *: 443> 80 ไม่สามารถเปิด "SSLEngine" ได้ คุณต้องมีการประกาศ VirtualHost แยกกัน 2 รายการสำหรับ SSL และไม่ใช่ SSL
Gacek

คำตอบ:


63

คำถามค่อนข้างคลุมเครือ แต่ฉันจะพยายามช่วย

ถ้าคุณต้องการให้ virtualhost เดียวกันรับฟังหลายพอร์ตคุณก็ทำสิ่งนี้:

Listen 80
NameVirtualHost *:80

Listen 8080    
NameVirtualHost *:8080

<VirtualHost *:80 *:8080>
  ServerName some.domain.name
  ServerAlias some.other.domain.name
  ....
</VirtualHost>

โดยทั่วไปคุณไม่ได้กำหนด VirtualHosts หลายชื่อตามชื่อโดเมนเดียวกันเว้นแต่ว่าคุณจำเป็นต้องใช้โปรโตคอลที่แตกต่างกัน

สำหรับโฮสต์เสมือนที่ใช้ชื่อ SSL คุณจะต้องระมัดระวังเป็นพิเศษ: ตามคำนิยามไม่มีใบรับรองหลายรายการใน IP เดียวกัน: พอร์ตดังนั้นเพื่อหลีกเลี่ยงข้อผิดพลาดของใบรับรองมันจะต้องเป็นใบรับรอง wilcard ซึ่งครอบคลุมชื่อโดเมนที่ให้บริการทั้งหมด


2
+1 แต่บางการแก้ไขขนาดเล็ก: ใบรับรอง SSL จะไม่ได้ผูกติดอยู่กับ adresses IP แต่ชื่อสามัญ (CN) ซึ่งจะต้องเท่ากับชื่อโฮสต์ นอกจากนี้ยังมีส่วนขยาย SNI เป็นไปได้ที่จะมีโฮสต์เสมือนหลายแห่งที่มีใบรับรองที่แตกต่างกันในที่อยู่ IP เดียวกัน ( en.wikipedia.org/wiki/Server_Name_Indication )
Daniel Rikowski

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