41

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>
HBruijn
  • 72,524
  • 21
  • 127
  • 192
user65567
  • 651
  • 2
  • 6
  • 9
  • 3
    Just to note. You cant join https and non-https virtual host into one. . 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](http://superuser.com/questions/188058/which-ports-are-considered-unsafe-on-chrome). – Ken Ingram Dec 19 '16 at 10:19

1 Answers1

73

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. (http://en.wikipedia.org/wiki/Server_Name_Indication) – Daniel Rikowski Mar 11 '13 at 14:55
  • 5
    +1 too, for SSL it should be – 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 00:46