Warning: file_get_contents(/data/phpspider/zhask/data//catemap/0/docker/10.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
按域名在EC2上进行Docker端口转发?_Docker_Nginx_Amazon Ec2_Devops_Portforwarding - Fatal编程技术网

按域名在EC2上进行Docker端口转发?

按域名在EC2上进行Docker端口转发?,docker,nginx,amazon-ec2,devops,portforwarding,Docker,Nginx,Amazon Ec2,Devops,Portforwarding,我的EC2实例上运行了2个dockers容器: Docker1:Wordpress网站运行,PHP服务器映射到EC2实例的端口8081 Docker2:在Angular running上创建的门户,NGINX映射到EC2实例的8082端口 我希望在同一端口80上为我的域和子域xyz.com以及portal.xyz.com使用相同的EC2实例 理想情况下,如果请求来自xyz.com,则应重定向到8081上运行的Docker1,如果请求来自portal.xyz.com,则应重定向到8082上运行的D

我的EC2实例上运行了2个dockers容器:

  • Docker1:Wordpress网站运行,PHP服务器映射到EC2实例的端口8081
  • Docker2:在Angular running上创建的门户,NGINX映射到EC2实例的8082端口
  • 我希望在同一端口80上为我的域和子域xyz.com以及portal.xyz.com使用相同的EC2实例

    理想情况下,如果请求来自xyz.com,则应重定向到8081上运行的Docker1,如果请求来自portal.xyz.com,则应重定向到8082上运行的Docker2


    是否可行?如果可行,如何可行?我不想为此产生2个EC2实例,它们都必须映射到端口80上的HTTP。

    使用多个负载平衡器和目标组可以解决您的问题


    您可以将两个负载平衡器设置为在HTTP上侦听,并将一个ECS实例定位在不同的端口上。在那之后,在Route53中设置路由就很简单了。

    我在VPS服务器上做过类似的事情,从技术上讲,它也应该在ec2实例上工作

  • 我创建了一个新的docker网络“代理网络”(注意:您可以不创建网络,只代理localhost:8081和localhost:8082。这只是更干净)
  • 使用专有名称(例如:wordpress、angular)启动该网络中的所有应用程序服务器。在run命令中使用--name,或在docker compose中使用conatiner_name
  • 启动一个新的nginx服务器映射主机端口80和443(如果需要https工作)。我使用了nginx:最新图片。在容器中创建了一个新的default.conf并替换/etc/nginx/conf.d/default.conf
  • 示例proxy.conf如下所示:

    server {
      listen        80;
      server_name   domain1.com www.domain1.com;
    
      location / {
        proxy_set_header X-Real-IP $remote_addr;
        proxy_pass  http://wordpress;
      }
    }
    server {
      listen        80 default_server;
      server_name   domain2.com www.domain2.com;
    
      location / {
        proxy_set_header X-Real-IP $remote_addr;
        proxy_pass  http://angular;
      }
    }
    
    一旦你更新了域名注册器中的别名记录,它的工作就像一个符咒。希望能有帮助。祝你好运