Declarando várias portas para os mesmos VirtualHosts

35

Declare várias portas para os mesmos 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>

Como posso declarar uma nova porta ('listen', ServerName, ...) para 'domain.localhost'?

Se eu adicionar o código a seguir, o apache funcionará (demais) também para todos os outros subdomínios de 'domínio.localhost' (subdomínio1.domínio.localhost, subdomínio2.domínio.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>
user65567
fonte
3
Apenas para observar. Você não pode ingressar em host virtual https e não https em um. <VirtualHost *: 80 *: 443>. 80 Não pode ter "SSLEngine ativado". Você precisa ter 2 declarações separadas do VirtualHost para SSL e não SSL.
Gacek
Aparentemente, o 4045 é uma porta não segura no Chrome .
Ken Ingram

Respostas:

63

A pergunta é um tanto ambígua, mas tentarei ajudar.

Se você deseja que o mesmo host virtual escute em várias portas, faça o seguinte:

Listen 80
NameVirtualHost *:80

Listen 8080    
NameVirtualHost *:8080

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

De um modo geral, você não define vários VirtualHosts baseados no nome do mesmo nome de domínio, a menos que precise usar um protocolo diferente.

Para virtualhosts baseados em nome SSL, você deve ter um cuidado extra: por definição, não pode haver vários certificados no mesmo IP: Port; portanto, para evitar erros de certificado, seria necessário um certificado wilcard, cobrindo todos os nomes de domínio atendidos.


fonte
2
+1, mas uma pequena correção: os certificados SSL não estão vinculados a endereços IP, mas a nomes comuns (CN) que devem ser iguais ao nome do host . Também com a extensão SNI, é possível ter vários hosts virtuais com certificados diferentes no mesmo endereço IP. ( pt.wikipedia.org/wiki/Server_Name_Indication )
Daniel Rikowski
3
+1 também, para SSL deve ser <VirtualHost *: 80 *: 443>
fedmich