根据dns地址在单独的docker容器上访问不同的网站



我正试图在我的nas上托管几个网站,这些网站将可以从公众访问。

我的计划是:

  1. 使用DDNS将域名(website1.dns.org,website2.dns.org(翻译为相同的外部ip地址(XXX.YYY.ZZZ.QQQ(
  2. 路由器上的端口转发(NAS上的端口80->端口88(
  3. 在我的NAS上的独立容器上托管两个网站

问题-我不知道如何将需要网站1的用户重定向到容器1以及要求网站2使用相同外部ip地址来容纳2的用户。我读过关于病毒主机的文章,但这需要一个带有web服务器(nginx或apache(的容器。对我来说有必要有单独的集装箱

@anemyte评论道,您可以使用反向代理根据请求中存在的任何数量的第7层参数(如标头(来路由请求。例如,您可以使用Nginx作为反向代理,通过提供的DNS名称,它将路由到应用程序1,并使用另一个路由到应用软件2,依此类推。不要与通常路由到相同类型的应用程序的负载均衡器混淆;只是";因为它的名称平衡了实例之间的负载。下面是一个如何配置这样一个东西的例子:

您可以在nginx配置文件中将每个服务(3个容器中的一个(分离到一个服务器,并为每个服务指定domain_name下的DNS

http {
server {
listen 80;
server_name domain_name1;
location / {
proxy_pass         http://nas-address:container1-port;
}
}
server {
listen 80;
server_name domain_name2;
location / {
proxy_pass         http://nas-address:container2-port;
}
}
server {
listen 80;
server_name domain_name3;
location / {
proxy_pass         http://nas-address:container3-port;
}
}
}

回答哪一个更详细:https://serverfault.com/questions/579285/how-to-proxy-a-server-based-on-domain-name-of-request-using-nginx

关于主题的nginx文档:https://docs.nginx.com/nginx/admin-guide/web-server/reverse-proxy/

redhat关于使用nginx作为反向代理的文章:https://www.redhat.com/sysadmin/setting-reverse-proxies-nginx

希望这是有用的