37

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>
  • 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 '14 at 12:57
  • Apparently, 4045 is an unsafe port in Chrome. – Ken Ingram Dec 19 '16 at 10:19
65

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.

  • 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) – Daniel Rikowski Mar 11 '13 at 14:55
  • 3
    +1 too, for SSL it should be <VirtualHost *:80 *:443> – fedmich Jun 10 '14 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 '19 at 0:46

Your Answer

By clicking “Post Your Answer”, you agree to our terms of service, privacy policy and cookie policy

Not the answer you're looking for? Browse other questions tagged or ask your own question.