我对管理不太了解,但我的情况如下:
我有一台只有一个 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
我以为通过配置 DNS,我可以使用不同的端口重定向每个子域... ip:80 ip:81 ip:82 ... ip:89 -> 但事实证明我错了
然后我想到用 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.