同じ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>

「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>

3
ただ注意してください。httpsと非https仮想ホストを1つに結合することはできません。<VirtualHost *:80 *:443>。80「SSLEngine on」にすることはできません。SSLと非SSLの2つの別個のVirtualHost宣言が必要です。
ガチェク14年

回答:


63

質問はいくぶんあいまいですが、私は助けようとします。

同じ仮想ホストが複数のポートでリッスンするようにするには、次を実行します。

Listen 80
NameVirtualHost *:80

Listen 8080    
NameVirtualHost *:8080

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

一般的に、異なるプロトコルを使用する必要がない限り、同じドメイン名の複数の名前ベースの仮想ホストを定義することはありません。

SSL名前ベースの仮想ホストの場合は、特に注意する必要があります。定義により、同じIP:Portに複数の証明書を含めることはできません。したがって、証明書エラーを回避するには、すべてのサービス対象ドメイン名をカバーするwilcard証明書である必要があります。


2
+1、ただし若干の修正:SSL証明書はIPアドレスではなくホスト名と等しくなければならない共通名(CN)に関連付けられています。また、SNI拡張機能を使用すると、同じIPアドレスで異なる証明書を持つ複数の仮想ホストを使用できます。(en.wikipedia.org/wiki/Server_Name_Indication
ダニエルRikowski

3
SSLのために、それは<443:80 *のVirtualHost *>である必要がありすぎて1、
fedmich
弊社のサイトを使用することにより、あなたは弊社のクッキーポリシーおよびプライバシーポリシーを読み、理解したものとみなされます。
Licensed under cc by-sa 3.0 with attribution required.