我有一个运行带pm2的2个Web应用程序的AWS EC2实例。服务器的地址配置为test.example.com
。 (指向EC2的弹性IP的GoDaddy DNS A记录)应用程序1在端口3000上运行,应用程序2在端口4000上运行。
我想要实现的是:
subdomain1
的流量都流向在端口3000上运行的应用程序。subdomain2
的流量都流向端口4000。现在这是棘手的部分,最终结果应类似于test.sub1.example.com
和test.sub2.example.com
。 (我是 subdomaining 的菜鸟,因此可能必须将其配置为我不知道的sub1.test.example.com
和sub2.test.example.com
)
我尝试通过在GoDaddy上设置指向特定端口的SRV
记录来做到这一点,但这只是行不通。
Service : _something
Protocol : _http
Name : sub2
Target : test.example.com
Priotiry : 0
Weight : 0
Port : 4000
TTL : 1 hour
我也读过此reddit article,但据我所知,它将把所有流向服务器的流量重定向到1个特定端口。如果我有2个不同的EC2实例,每个实例都运行各自的Web应用程序并以这种方式配置,那将不是问题。
其他信息:EC2实例运行Ubuntu 16.04
,EC2上的Web服务器为nginx 1.14.0
答案 0 :(得分:1)
我似乎找到了一个简单的解决方案:
我在GoDaddy的DNS上添加了3个子域:
A: test.example.com -> <aws-elastic-IP>
A: subdomain1.test.example.com -> <aws-elastic-IP>
A: subdomain2.test.example.com -> <aws-elastic-IP>
然后在nginx的默认配置中,为每个子域添加一个指向正确端口的代理通道
server { # landing page
server_name test.example.com;
index index.html;
root /home/user/project-source;
location / {
root /home/user/project-source;
}
...
}
server { # webapp running on port 3000
server_name subdomain1.test.example.com;
location / {
proxy_pass http://localhost:3000;
...
}
...
}
server { # webapp running on post 4000
server_name subsomain2.test.example.com;
location / {
proxy_pass http://localhost:4000;
...
}
...
}