Apache-2.2

為同一個 VirtualHosts 聲明多個埠

  • December 19, 2016

為同一個 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>

如何為“domain.localhost”聲明一個新埠(“listen”,ServerName,…)?

如果我添加以下程式碼,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>

這個問題有點模棱兩可,但我會盡力提供幫助。

如果您希望同一個虛擬主機在多個埠上偵聽,那麼您可以這樣做:

Listen 80
NameVirtualHost *:80

Listen 8080    
NameVirtualHost *:8080

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

一般來說,您不會定義多個基於名稱的同一個域名的 VirtualHost,除非您需要使用不同的協議。

對於基於 SSL 名稱的虛擬主機,您必須格外小心:根據定義,同一個 IP:Port 上不能有多個證書,因此,為避免證書錯誤,它必須是一個萬用字元證書,涵蓋所有服務的域名。

引用自:https://serverfault.com/questions/219261