我想在多个域和子域中运行多个服务

问题描述 投票:-1回答:1

我在Google云平台中有一个linux VM实例。我有多个统治者。例如aaa.com,bbb.com并且我想要多种服务并设置子域

service    port    subdomain
apache1    80      aa.aaa.com
apache2    81      bb.aaa.com
tomcat1    8080    cc.aaa.com
tomcat2    8081    dd.aaa.com
nodejs1    8000    ee.aaa.com
nodejs2    8001    ff.aaa.com
rshiny1    3838    aa.bbb.com
rshiny2    3839    bb.bbb.com
ftp1       21      cc.bbb.com
ftp2       20      dd.bbb.com
mariadb1   3306    ee.bbb.com
mariadb2   3307    ff.bbb.com
oracle1    1521    gg.bbb.com
oracle2    1522    hh.bbb.com

如果我仅使用apache Web服务器,则可以在虚拟主机中设置子域。但这是很多服务。如何设置所有子域?在阿帕奇? node.js? DNS?请回答我的问题。谢谢!

node.js apache ubuntu subdomain
1个回答
0
投票

这是反向代理的用途。配置Apache来做到这一点非常简单。

为主要前端运行一个Apache,并为其提供默认的http / https porst(80/443)。然后使用它将vhost请求代理到各个服务,如下所示:

<VirtualHost *:80>
    ProxyRequests off
    ProxyPreserveHost On

    ServerName bb.aaa.com

    <Location />
        ProxyPass http://127.0.0.1:81/
        ProxyPassReverse http://127.0.0.1:81/
        Order allow,deny
        Allow from all
    </Location>    
</VirtualHost>

<VirtualHost *:80>
    ProxyRequests off
    ProxyPreserveHost On

    ServerName cc.aaa.com

    <Location />
        ProxyPass http://127.0.0.1:8080/
        ProxyPassReverse http://127.0.0.1:8080/
        Order allow,deny
        Allow from all
    </Location>    
</VirtualHost>

# ...

为每个服务创建一个。这样,您的服务器将根据请求中的域名而不是TCP端口号进行路由。

当然,如果这样做,您的内部服务将无法使用默认端口(80/443),因为前端Apache需要它。但是,您也可以将在默认端口上运行该服务的Apache用作代理服务器。

基本上,您将得到这种设置:

                                         ┌────────────┐
                                    ┌┄┄┄┄┤ apache2:81 │
                                    ┆    └────────────┘
                                    ┆    ┌──────────────┐
                                    ├┄┄┄┄┤ tomcat1:8080 │
           ┌───────────────────┐    ┆    └──────────────┘
internet┄┄┄┤front-end apache:80├┄┄┄┄┤    ┌──────────────┐
           └───────────────────┘    ├┄┄┄┄┤ tomcat2:8081 │
                                    ┆    └──────────────┘
                                    ┆
                                    .
                                    .

这种类型的设置非常灵活,允许您基于<Location>而不是域名或端口号来实现诸如负载平衡和路由服务之类的功能。在CORS之前,这是通过使用单个Apache或Nginx通过位置/ URL路径进行路由来实现微服务的标准方法。

© www.soinside.com 2019 - 2024. All rights reserved.