Apache: [warn] _default_ VirtualHost overlap on port 80, the first has precedence Error and Solution

Posted on in Categories , , , , , , , , , , , , last updated November 2, 2008

Question:I’m using Apache 2 to host multiple site on a single host using Apache name based VirtualHost feature. However, Apache is displaying lots of warning as follows:

Performing sanity check on apache22 configuration:
[Portal Oct 05 06:59:34 2008] [warn] _default_ VirtualHost overlap on port 80, the first has precedence
[Portal Oct 05 06:59:34 2008] [warn] _default_ VirtualHost overlap on port 80, the first has precedence
[Portal Oct 05 06:59:34 2008] [warn] NameVirtualHost 81.aaa.www.yyy:80 has no VirtualHosts
Syntax OK
Stopping apache22.
Waiting for PIDS: 14968.
Syntax OK
Starting apache22.
[Portal Oct 05 06:59:36 2008] [warn] _default_ VirtualHost overlap on port 80, the first has precedence
[Portal Oct 05 06:59:36 2008] [warn] _default_ VirtualHost overlap on port 80, the first has precedence
[Portal Oct 05 06:59:36 2008] [warn] NameVirtualHost 81.aaa.www.yyy:80 has no VirtualHosts

How do I fix this warning and host multiple websites under UNIX / Linux Apache 2 webserver?

Answer: The NameVirtualHost directive is a required to configure name-based virtual hosts. Add this to your httpd.conf file to fix this issue. Open httpd.conf file:
# vi httpd.conf
Add NameVirtualHost as follows:
NameVirtualHost *:80
OR add server IP
NameVirtualHost 202.54.1.1:80
Save and close the file. Restart httpd web server under RHEL / Red Hat / Fedora / CentOS Linux:
# service httpd restart
OR type the following to restart Apache 2 under Debian / Ubuntu Linux:
# /etc/init.d/apache2 restart

Sample Apache 2 Virtual hosting configuration

If you want to maintain multiple domains/hostnames on your machine you can setup VirtualHost containers for them. Most configurations use only name-based virtual hosts so the server doesn’t need to worry about IP addresses. This is indicated by the asterisks in the directives below.

# My Virtual Hosts Config File for Two Domains
NameVirtualHost *:80
 
<VirtualHost *:80>
    ServerAdmin [email protected]
    DocumentRoot "/usr/local/docs/theos.in"
    ServerName www.theos.in
    ServerAlias theos.in
    ErrorLog "/var/log/theos.in-error_log"
    CustomLog "/var/log/theos.in-access_log" common
</VirtualHost>
 
<VirtualHost *:80>
    ServerAdmin [email protected]
    DocumentRoot "/usr/local/docs/nixcraft.com"
    ServerName www.nixcraft.com
    ServerAlias nixcraft.com
    ErrorLog "/var/log/nixcraft.com-error_log"
    CustomLog "/var/log/nixcraft.com-access_log" common
</VirtualHost>

43 comment

  1. is not working for me… really dont know why… its always taking the first entry…

    my domain provider:
    -----------halbgasse.at:
    http://80.108.98.115
    -----------hebron.at:
    http://80.108.98.115

    —————/etc/apache2/sites-available:

    NameVirtualHost *:80
     
    
        ServerAdmin [email protected]
        DocumentRoot "/var/www/halbgasse"
        ServerName www.halbgasse.at
        ServerAlias halbgasse.at
        ErrorLog "/home/www/halbgasse_error_log"
        CustomLog "/home/www/halbgasse_in-access_log" common
    
     
    
        ServerAdmin [email protected]
        DocumentRoot "/var/www/hebron"
        ServerName www.hebron.at
        ServerAlias hebron.at
        ErrorLog "/home/www/hebron_error_log"
        CustomLog "/home/www/hebron_access_log" common
    
    -------------------------------------------------------------
  2. The NameVirtualHost *:80 directive should go in your httpd.conf – sites available is generally symlinks of the actual virtual hosts.

  3. # My Virtual Hosts Config File for Two Domains
    NameVirtualHost *:80

    ServerAdmin [email protected]
    DocumentRoot “/usr/local/docs/theos.in”
    ServerName http://www.theos.in
    ServerAlias theos.in
    ErrorLog “/var/log/theos.in-error_log”
    CustomLog “/var/log/theos.in-access_log” common

    ServerAdmin [email protected]
    DocumentRoot “/usr/local/docs/nixcraft.com”
    ServerName http://www.nixcraft.com
    ServerAlias nixcraft.com
    ErrorLog “/var/log/nixcraft.com-error_log”
    CustomLog “/var/log/nixcraft.com-access_log” common

    When I configure the same file , I have a problem. I used Firefox, everytime I type http://www.theos.in or http://www.nixcraft.com, I only see mainpage (theos.in), no nixcraft.com

  4. Hi all i don t understund why it s always the first entry that is taken into account ??
    I don t understund at all
    Please help me

  5. Finally it fixed.

    I’ve had this problem on an Ubuntu Server for the whole time I’ve been running it (about 18 months) and have just avoided using Apache on it since I couldn’t find a fix and it seemed to work fine everywhere else. Now its fixed and I can use it properly.

    My eternal gratitude!!!!

  6. If you use Ubutu 10.10 as server and have configured as they suppose
    For example:
    under apache2/sites-enabled/eww.test.de
    with the content:
    # —————–
    # eww.test.de
    # ——————————————————-

    ServerName eww.test.de
    ServerAlias eww.test.de
    ServerAdmin [email protected]
    ErrorLog /var/log/httpd/test-error_log
    CustomLog /var/log/httpd/test-access_log common
    DocumentRoot /home/eww/local

    and edit your /etc/apache2/apache2.conf to add “NameVirtualHost *:80”
    beware that you don’t add this at the end of the file instead put it over
    >Include httpd.conf< or add this directive in the httpd.conf.
    It took some hours of "service apache2 restart" until I found it.

    1. Oops, the blog eat my <
      Again the eww.test.de content\

      # -----------------
      # eww.test.de
      # -------------------------------------------------------
      <VirtualHost *:80>
      ServerName eww.test.de
      ServerAlias eww.test.de
      ServerAdmin [email protected]
      ErrorLog /var/log/httpd/test-error_log
      CustomLog /var/log/httpd/test-access_log common
      DocumentRoot /home/eww/local
      <Directory /home/eww/local>
      #	AllowOverride None
      #	Order Allow,Deny
      #	Allow from all
      #	Options +Indexes	
      </Directory>
      </VirtualHost>
      
  7. Terima kasih banyak ….. after many days i lookingfor this, i get the answer
    simple but very important
    NameVirtualHost *:80

    Thankyu very much….:)

  8. If you find yourself really stuck with this error, make sure that ALL of your VirtualHosts’ port designators match the port designated on the NameVirtualHost directive!

    For instance:

    NameVirtualHost *:80
    
        # Some Apache Directives
    
    

    That will result in the Port Overlap error because your VHost port doesn’t match the NameVirtualHost port.

  9. Thanks for this info. I couldn’t figure out why my virtual host config was not working. The Apache error message is not very useful for this problem.

  10. Also remember, at least on Red-hat based distors, that all the site configurations are loaded from /etc/httpd/conf.d in alphabetical order making the first one the default virtual host.

  11. For all of you who got problem.

    This line : NameVirtualHost *:80 MUST be just before :

        ServerAdmin [email protected]
        DocumentRoot "/usr/local/docs/theos.in"
        ServerName www.theos.in
        ServerAlias theos.in
        ErrorLog "/var/log/theos.in-error_log"
        CustomLog "/var/log/theos.in-access_log" common
    
     
    
        ServerAdmin [email protected]
        DocumentRoot "/usr/local/docs/nixcraft.com"
        ServerName www.nixcraft.com
        ServerAlias nixcraft.com
        ErrorLog "/var/log/nixcraft.com-error_log"
        CustomLog "/var/log/nixcraft.com-access_log" common
    
    

    Thx for this tweak !

  12. Awesome, this totally helped me get set up. I upgraded to Mavericks in-place from Lion, and my Apache vhosts were completely fubared until I found your post. Thanks!

Leave a Comment