19

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.

Excellll
  • 12,847
Stephen Cioffi
  • 381
  • 1
  • 4
  • 19

1 Answers1

11

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.

Moreover, in almost all scenarios you can use non-HTTPS servers for the back-ends. All server certificates and TLS/SSL support will be installed on machine A, and the internal connections may well be in the clear.

Alternatively, some routers (e.g. OpenWRT) can decode HTTPS and can act as redirectors. They will need to be loaded with the server certificates in order to perform what is essentially a "man in the middle" attack.

LSerni
  • 8,620