Quick Review: Boxee Box
December 27, 2011 – 12:22 am | 3 Comments

Some of the technical issues with Boxee Box could have been fixed if the dev team was paying more attention to addressing the bugs rather than adding “features” of dubious value. In the final analysis, for the price and ease of use, Boxee Box is the best in its class and price range. You just need to be mindful of its limitations and buy it in hope of future improvements to its usability.

Read the full story »
Networking

Unix and Linux network configuration. Multiple network interfaces. Bridged NICs. High-availability network configurations.

Applications

Reviews of latest Unix and Linux software. Helpful tips for application support admins. Automating application support.

Data

Disk partitioning, filesystems, directories, and files. Volume management, logical volumes, HA filesystems. Backups and disaster recovery.

Monitoring

Distributed server monitoring. Server performance and capacity planning. Monitoring applications, network status and user activity.

Commands & Shells

Cool Unix shell commands and options. Command-line tools and application. Things every Unix sysadmin needs to know.

Home » Apache

Apache and Multiple Domains – from Home

Submitted by on June 10, 2008 – 5:15 pmOne Comment
Apache and Multiple Domains – from Home

Apparently there are folks out there who are still interested in running their own Web server from home. More than that – they want to have multiple domains. Guys, Web hosting these days is so cheap – they are virtually paying you to host your site. Besides, there are ISPs out there that don’t look kindly on their customers running their own Web servers. However, if you insist, here are the step-by-step (more or less) instructions for setting up a multi-domain Apache 2 server under Linux.

The IP address your ISP gave you is going to change sooner or later. So you need a way of quickly updating DNS servers. You cannot do this from home – you will need to sign up for a managed DNS service. One of such services is No-IP. If you need to register a domain name, they can do it for you as well. If you already have a domain name, you will need to update your DNS information with your registrar to point to the No-IP DNS servers.

At the No-IP site, you will need to specify your home IP address. If your IP changes often, you may need to look into the dynamic DNS feature. There is a client application that you can download, that will detect when your IP changes and it will update your No-IP information automatically. For an additional fee No-IP and similar providers can handle email service for your domain.

You can have more than one domain point to your home IP. For example, you can have “www.domain1.com”, “www.domain2.com”, and “www.domain3.com” all point to the same IP address. The trick is to make your Web server differentiate among the three. So, when an HTTP request comes in, how does your server know which domain it’s for? When you click on a link, the HTTP referrer information specifies the domain name. This information is passed to your server and that’s how it knows which domain to use.

Apache supports name-based virtual hosts. As you probably realize, with a single IP address you can’t have three separate IP-based Web servers running on your system. But you can have virtual and that’s good enough for most purposes. Below is the virtual host section of a sample httpd.conf tested on Apache 2 running under SuSE 9. Make sure to backup your original httpd.conf before making any changes. The basic setup goes something like this:

  1. Three domains: www.domain1.com, www.domain2.com, www.domain3.com
  2. Domain1 home is in /srv/www/htdocs; Domain2 home is in /srv/www/htdocs/domain2; and Domain3 home is in /srv/www/htdocs/domain3
  3. Domain1 is the primary physical domain. If an HTTP request comes in and there is no HTTP referrer information, then it will default to Domain1.
    DocumentRoot /srv/www/htdocs/domain3
    ServerName www.domain3.com
    ServerAlias domain3.com *.domain3.com
 
    ServerAdmin webmaster@domain3.com
    ErrorLog /var/log/apache2/domain3_error.log
    CustomLog /var/log/apache2/domain3_access.log combined
 
    HostNameLookups off
    UseCanonicalName On
    ServerSignature On
 
        Options -Indexes FollowSymLinks
        AllowOverride None
        Order allow,deny
        Allow from all
 
    DocumentRoot /srv/www/htdocs/domain2
    ServerName www.domain2.com
    ServerAlias domain2.com *.domain2.com
 
    ServerAdmin webmaster@domain2.com
    ErrorLog /var/log/apache2/domain2_error.log
    CustomLog /var/log/apache2/domain2_access.log combined
 
    HostNameLookups off
    UseCanonicalName On
    ServerSignature On
 
        Options -Indexes FollowSymLinks
        AllowOverride None
        Order allow,deny
        Allow from all
 
    DocumentRoot /srv/www/htdocs
    ServerName www.domain1.com
    ServerAlias domain1.com *.domain1.com
 
    ServerAdmin webmaster@domain1.com
    HostNameLookups off
    UseCanonicalName On
    ServerSignature On
 
        Options -Indexes FollowSymLinks
        AllowOverride None
        Order allow,deny
        Allow from all
 
        Options None
        AllowOverride None
        Order allow,deny
        Deny from all
 
        Options None
        AllowOverride None
        Order allow,deny
        Deny from all

Now a couple of security pointers. Make sure that your primary (catch-all) “domain1″ is last in the list of virtual servers. Also, in the directory configuration of the “domain1″ virtual server restrict access to the “domain2″ and “domain3″ subfolders (see “Deny from all” syntax above). This way these directories can only be accessed via their respective virtual servers.

As shown above, it is a good idea to have a separate access and error log for each virtual server. This way you can analyze traffic for each domain separately. In the “Options” for the home directory for each virtual server make sure to use the “-Indexes” flag. This will prevent people from getting a directory listing for subfolders that do not have a default page, such as index.htm or index.php: you don’t want anybody snooping around.

The next step is often overlooked and it’s not mentioned in the official Apache documentation. You need to make sure that you put the following entries in your /etc/hosts:

127.0.0.1         localhost
127.0.0.1         www.domain1.com         domain1.com
127.0.0.1         www.domain2.com         domain2.com
127.0.0.1         www.domain3.com         domain3.com

The first line should already be there, but you will need to add the other three to make sure that your server knows that its handling all three domains. Otherwise, all attempts to access virtual servers will result in “host not found” type of error or it will default to your primary domain. Now you need to restart your Apache and, if you didn’t skip any steps, everything should be working.

Popularity: 3% [?]

Related posts:

  1. Apache MySQL PHP Solaris 8 Installation

One Comment »

  • plunk7 says:

    Thanks for the tip. I did not have the /etc/hosts entries and every time I tried accessing virtual hosts, I was getting the default domain. Now everything works as it should.

    [Reply]

Leave a comment!

Add your comment below, or trackback from your own site. You can also subscribe to these comments via RSS.

Be nice. Keep it clean. Stay on topic. No spam.

You can use these tags:
<a href="" title=""> <abbr title=""> <acronym title=""> <b> <blockquote cite=""> <cite> <code> <del datetime=""> <em> <i> <q cite=""> <strike> <strong> <pre lang="" line="" escaped="" highlight="">

This is a Gravatar-enabled weblog. To get your own globally-recognized-avatar, please register at Gravatar.