如何将请求路由到运行在不同计算机上的IIS和/或Apache,1个公共IP端口80

时间:2017-02-19 23:33:15

标签: apache iis nginx dns haproxy

这是我的设置:

有域名:domain.com。

在我的本地网络中,我获得了一个活动目录框提供的DNS,

在端口80上运行的IIS Web服务器,主机名为iis.domain.com, 这有网站iis1.domain.com,iis2.domain.com

在端口80上运行的Apache Web服务器,主机名为apache.domain.com, 使用网站apache1.domain.com和apache2.domain.com。

在我的本地网络中,我可以很好地访问所有这些网站。 我还有iis1,iis2,apache1和apache2的外部dns条目。

我只有一个公共IP地址,我想设置另一个将端口转发到互联网的端口(端口转发端口80和443)。 我想知道在该盒子上安装什么以及如何配置它。

我已经查看了nginx,haproxy和IIS ARR,但我想知道哪些是最容易设置的,并且开销最小。

在我看来,我想指定类似......如果它是对网站iis1.domain.com的请求然后把那个带到IIS网络服务器,如果它是用于apache1.domain .com然后转到Apache Web服务器。 我想使用Linux解决方案,但我不确定哪个以及如何设置它。

提前谢谢。

P.S。 我看到了一个可能的解决方案here

这样的事情会起作用吗?

.emacs

2 个答案:

答案 0 :(得分:0)

我会选择haproxy(在我看来最简单)
只需要非常小心你的外部DNS和内部DNS。 你在问题中的例子转发到dns ....它指向代理(外部)....指向dns ......我认为你得到了我的意思。

HAProxy会指向您的后端IP地址,因此内部和外部DNS都会指向您的代理并被路由到其预期的后端

HAProxy配置看起来像这样:

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

答案 1 :(得分:0)

我设法通过安装带有nginx的linux盒子来实现这一点。此框中的端口80将被转发到互联网。

在/ etc / nginx中我添加了一行来查找其他配置文件 - > include /etc/nginx/sites-enabled/*.conf; 。

所以在/ etc / nginx / sites-enabled /我创建了一个配置文件,其中包含以下信息:

server {
    listen 80;
    server_name apache1.domain.com;
    location /{
        proxy_pass http://apache1.domain.com;
    }
}

server {
    listen 80;
    server_name apache2.domain.com;
    location /{
        proxy_pass http://apache2.domain.com;
    }
}

server {
        listen 80;
        server_name iis1.domain.com;
        location /{
                proxy_pass http://iis1.domain.com;
        }
}

server {
        listen 80;
        server_name iis2.domain.com;
        location /{
                proxy_pass http://iis2.domain.com;
        }
}