Q:

How to route requests to IIS and/or Apache running on different machines , 1 public IP port 80

This is my setup:
Got a domain : domain.com .
Within my local network I got DNS provided by an active directory box, 
an IIS web server running on port 80, host name iis.domain.com,
and this has sites iis1.domain.com, iis2.domain.com
an Apache web server running on port 80, host name apache.domain.com,
with the sites apache1.domain.com and apache2.domain.com.
Within my local network I can access all these sites just fine.
I also have external dns entries for iis1,iis2,apache1 and apache2.
I only have one public IP address and I would like to setup another box which would get port forwarded into the internet ( port forward port 80 and 443 ).
I would like to know what to install on that box and how to configure it.
I have looked at nginx, haproxy and IIS ARR, but I would like to know which of these are the easiest to setup and have the least overhead.
In my mind I would like to specify something like.... ok if it's a request for site iis1.domain.com then take that one to the IIS web server, and if it is for apache1.domain.com then go to the Apache web server.
I would like to go with a Linux solution, but I am not sure which and how to set it up.
Thank you in advance.
P.S.
I saw a possible solution here. 
Would something like this work ? 
server {

        listen 80 default_server;

        server_name iis1.domain.com;

        location / {
                        proxy_pass http://iis1.domain.com/;
        }

}

server {

        listen 80 default_server;

        server_name apache1.domain.com;

        location / {
                        proxy_pass http://apache1.domain.com/;
        }

}

A:

I would go with haproxy (easiest in my opinion)
just be very careful with your External vs Internal DNS.
the example you have in your question forwards to a dns....which points back to the proxy(external)....which points to the dns...i think you get my meaning. 
HAProxy would point to your backends IP address so both internal and external DNS would point to your proxy and get routed fine to its intended backend
the HAProxy config would look something like this : 
global
    # default globals
defaults
    # default globals
frontend http-in
    bind                        YOUR.IP.GOES.HERE:80
    bind                        YOUR.IP.GOES.HERE:443 ssl crt PATH/TO/CERT-FILE.PEM no-sslv3
    mode                        http
    option                      httplog
    option                      httpclose
    option                      forwardfor

    acl iis1                    hdr(Host) -i iis1.domain.com
    acl iis2                    hdr(Host) -i iis2.domain.com
    acl apache1                 hdr(Host) -i apache1.domain.com
    acl apache2                 hdr(Host) -i apache2.domain.com

    use_backend iis if iis1
    use_backend iis if iis2
    use_backend apache  if apache1
    use_backend apache  if apache2    

 backend iis
        server IIS      xxx.xxx.xxx.xxx:80 check

 backend apache
        server APACHE   xxx.xxx.xxx.yyy:80 check

