43

Declare multiple ports for the same 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>

How can I declare a new port ('listen', ServerName, ...) for 'domain.localhost'?

If I add the following code, apache works (too much) also for all other subdomain of '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>
2
  • 3
    Just to note. You cant join https and non-https virtual host into one. <VirtualHost *:80 *:443>. 80 Cannot have "SSLEngine on". You have to have 2 sepearate VirtualHost declarations for SSL and non-SSL.
    – Gacek
    May 10, 2014 at 12:57
  • Apparently, 4045 is an unsafe port in Chrome.
    – Ken Ingram
    Dec 19, 2016 at 10:19

1 Answer 1

77

The question is somewhat ambiguous, but I'll try to help.

If you want the same virtualhost to listen on multiple ports, then you do this:

Listen 80
NameVirtualHost *:80

Listen 8080    
NameVirtualHost *:8080

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

Generally speaking you don't define multiple name-based VirtualHosts of the same domain name, unless you need to use a different protocol.

For SSL name-based virtualhosts you have to be extra careful: by definition there can not be multiple certificates on the same IP:Port, so, to avoid certificate errors it would have to be a wilcard certificate, covering all served domain names.

4
  • 2
    +1 but some small correction: SSL certificates are not tied to IP adresses but to common names (CN) which must equal the host name. Also with the SNI extension it is possible to have multiple virtual hosts with different certificates on the same IP address. (en.wikipedia.org/wiki/Server_Name_Indication) Mar 11, 2013 at 14:55
  • 5
    +1 too, for SSL it should be <VirtualHost *:80 *:443>
    – fedmich
    Jun 10, 2014 at 23:10
  • 1
    On 2.4, you will get this error: AH00548: NameVirtualHost has no effect and will be removed in the next release
    – Dat TT
    Dec 26, 2019 at 0:46
  • <VirtualHost *:*> is the ultimate wildcard.
    – Abdull
    Oct 12, 2022 at 17:52

You must log in to answer this question.

Not the answer you're looking for? Browse other questions tagged .