如何解决通过域名在EC2上进行Docker端口转发?
我有2个在我的EC2实例上运行的dockers容器:
- Docker1:WordPress服务器上运行的PHP服务器已映射到EC2实例的端口8081。
- Docker2:在Angular上创建的门户网站,NGINX映射到EC2实例的端口8082。
我想在相同的端口80上为我的域和子域xyz.com和portal.xyz.com使用相同的EC2实例。
理想情况下,如果请求来自xyz.com,则应将其重定向到运行在8081上的Docker1,如果请求来自portal.xyz.com,则应将其重定向到运行在8082上的Docker2。
可行吗?如果可以,怎么办?我不想为此生成2个EC2实例,并且都必须将其映射到端口80上的HTTP。
解决方法
使用多个负载均衡器和目标组可以解决您的问题。 https://aws.amazon.com/about-aws/whats-new/2019/07/amazon-ecs-services-now-support-multiple-load-balancer-target-groups/
您可以将两个负载均衡器设置为侦听HTTP,并将一个ECS实例定位到不同的端口。之后,在Route53中设置路由将很简单。
,我在VPS服务器上做过类似的事情,从技术上讲,它也应在ec2实例上工作。
- 我创建了一个新的docker网络“ proxy-network”(注意:您可以不创建网络而只代理localhost:8081和localhost:8082。这样做更干净)
- 使用适当的名称(例如:wordpress,angular)启动该网络中的所有应用程序服务器。在运行命令中使用--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;
}
}
一旦您更新了域名注册机构中的别名记录,它就会像一个超级按钮。希望能帮助到你。祝你好运。
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。