一个 IP,多个虚拟机上的多个子域名

一个 IP,多个虚拟机上的多个子域名

我对管理不太了解,但我的情况如下:

我有一台只有一个 IP 地址的大型服务器。在这台服务器上,我有 9 台虚拟机。我希望所有这些域都指向所有不同的机器:

www.mysite.com => 10.8.0.10
api.mysite.com => 10.8.0.20
pro.mysite.com => 10.8.0.30

dev-www.mysite.com => 10.8.1.10
dev-api.mysite.com => 10.8.1.20
dev-pro.mysite.com => 10.8.1.30

test-www.mysite.com => 10.8.2.10
test-api.mysite.com => 10.8.2.20
test-pro.mysite.com => 10.8.2.30
  1. 我以为通过配置 DNS,我可以使用不同的端口重定向每个子域... ip:80 ip:81 ip:82 ... ip:89 -> 但事实证明我错了

  2. 然后我想到用 nginx 可以将子域名重定向到虚拟机...但我没有找到正确的解决方案

svp,您能针对这个具体情况给出最好的建议吗?

答案1

然后我想到,我可以用 nginx 将子域名重定向到虚拟机

是的,这就是nginx的“反向代理”功能的作用。

在主机服务器上,server { … }为所有子域定义块。不要指定文档根路径,而是使用proxy_pass将 nginx 指向每个虚拟机。(虚拟机必须使用仅主机或桥接网络。)

对于您的示例,您可以使用:

server {
    server_name www.mysite.com;
    listen *:80;
    listen [::]:80;
    location / {
        proxy_pass http://10.8.0.10;
    }
}

server {
    server_name api.mysite.com;
    listen *:80;
    listen [::]:80;
    location / {
        proxy_pass http://10.8.0.20;
    }
}

etc.

相关内容