首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >如何将请求路由到在不同机器上运行的IIS和/或Apache,1公共IP端口80

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

Stack Overflow用户
提问于 2017-02-19 23:33:15
回答 2查看 589关注 0票数 1

这是我的设计:

有一个域名: domain.com。

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

在端口80上运行的IIS web服务器,主机名为iis.domain.com,其中有站点iis1.domain.com,iis2.domain.com

运行在端口80上的Apache服务器,主机名为apache.domain.com,其中包含站点apache1.domain.com和apache2.domain.com。

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

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

我看过nginx、have和IIS ARR,但我想知道其中哪一个最容易设置,开销最小。

在我看来,我想说的是.好的,如果这是对站点iis1.domain.com的请求,那么将该请求带到IIS服务器,如果是针对apache1.domain.com的,则转到Apache服务器。我想使用Linux解决方案,但我不知道该如何设置它。

提前谢谢你。

我看到了一个可能的解决方案,这里。

像这样的东西有用吗?

代码语言:javascript
复制
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/;
        }

}
EN

回答 2

Stack Overflow用户

回答已采纳

发布于 2017-02-21 12:28:55

我会选择haproxy (我认为最简单)

只是要非常小心你的外部与内部DNS。在您的问题中的示例转发到一个dns....which,指向代理(外部)....which指向dns.我认为您理解我的意思。

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

HAProxy配置如下所示:

代码语言:javascript
复制
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
票数 0
EN

Stack Overflow用户

发布于 2017-02-21 13:21:56

通过安装带有nginx的linux盒,我成功地实现了这一目标。此框中的端口80被转发到互联网。

在/etc/nginx中,我添加了一行以查找其他配置文件,->包括/etc/nginx/sites启用/*..conf;。

因此,在/etc/nginx/site中,启用了/i创建了一个配置文件,其中包含以下信息:

代码语言:javascript
复制
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;
        }
}
票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/42334242

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档