Take the 2-minute tour ×
Super User is a question and answer site for computer enthusiasts and power users. It's 100% free, no registration required.

I am running multiple web servers in my house, each of which is plugged into my router.

Server A Server B Server C

I currently can only use one server since my IP (xx.xxx.xx.xx) port 80 is pointing towards server A. However some domains point to server A, some to B, etc.

With my one IP address, how do I point to each server? For example my A(host) records all point to just my IP address.

Sorry if I sound confusing. Let me know if I am not being clear.

Each server is running Ubuntu Server 12.04.02 and is using Apache (if that helps). My router is also a Netgear and my ISP is Time Warner Cable.

share|improve this question
    
possible duplicate of Multiple web servers behind a single firewall –  kobaltz Jun 22 '13 at 20:38
    
@kobaltz Not exactly since these are different servers, not virtual hosts. These are 3 physical servers –  Stephen Jun 22 '13 at 21:42
    
My answer within the question is still the same thing where you would have a reverse proxy server that would be what is first hit after the router. From there, it would push the data to one of the three servers. You can even do this from within the router if you use something like OpenWRT. –  kobaltz Jun 22 '13 at 23:52
    
I'm currently using the explanation in my answer of the other question. I have a Virtual Machine server that had a VM for the gateway, and then 20 nodes. Depending on the subdomain and the domain name, it pushes the data to one of the 20 servers. –  kobaltz Jun 22 '13 at 23:54

1 Answer 1

up vote 2 down vote accepted

Web sites will be recognized through the Host: header sent from the browser. But since your router isn't capable of HTTP demangling used by virtual hosting, you will need to choose one server as "endpoint" (and tell your router that address as Virtual Server / DMZ).

Then, you either configure that one machine as webserver for its domains and proxy for the others (e.g. using Apache reverse proxy), or (maybe better) you install a proxy on that one machine, and use it to multiplex requests to the other servers. Some domains might even be hosted on the same machine. nginx is suited for this kind of work, but you can also use other software (e.g. pound).

I think the second solution is better because you do not need to fiddle with web servers' configurations at all: one proxy does the proxying and several web servers do the web serving. If you need to add servers or move virtual hosts around, this architecture is easier to maintain.

                                    +-- virtual hosts 1..9 -- server B
                                    |
router ----- machine A (nginx?) ----+-- virtual hosts 10..23- server C
                                    |
                                    +-- virtual hosts 24..99- server D

The added latency due to the request being decoded twice (once by the proxy, once by its intended recipient) is negligible, and more than offset by the acceleration provided by the proxying itself.

share|improve this answer

Your Answer

 
discard

By posting your answer, you agree to the privacy policy and terms of service.

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