当前位置: 首页 > 工具软件 > HAProxy-WI > 使用案例 >

阿里云ECS用tutumcloud/haproxy做virtual host

宗政才俊
2023-12-01

仅仅做为个人笔记使用

参考:https://github.com/tutumcloud/haproxy

主要是参考该主页上,这一段的用法

I want to set up virtual host routing by domain

Virtual hosts can be configured by the proxy reading linked container environment variables (VIRTUAL_HOST). Here is an example:

docker run -d -e VIRTUAL_HOST="www.webapp1.com, www.webapp1.org" --name webapp1 tutum/hello-world
docker run -d -e VIRTUAL_HOST=www.webapp2.com --name webapp2 your/webapp2
docker run -d --link webapp1:webapp1 --link webapp2:webapp2 -p 80:80 tutum/haproxy

In the example above, when you access http://www.webapp1.com or http://www.webapp1.org, it will show the service running in container webapp1, and http://www.webapp2.com will go to container webapp2.

这里的example用的是原文的image,由于直接在ECS上面做实验,所以最后效果貌似没出来

所以直接基于之前搭建的apache2的镜像来设置,那么运行为

docker run -d -e VIRTUAL_HOST="域名1" --name webapp1 -p 1080:80 -i -t apache2

docker run -d -e VIRTUAL_HOST="域名2" --name webapp2 -p 1081:80 -i -t apache2

docker run -d --link webapp1:webapp1 --link webapp2:webapp2 -p 80:80 tutum/haproxy

这里-d是在后台运行,然后指定域名,--name是对这个容器进行一个命名,需要应用在tutum/haproxy上,-p是指定端口映射,这里是将宿主机上的1080端口映射到docker容器内的80端口上,在笔者实验中,这个apache2的镜像是需要指定端口才好用的,不过之前下载的一个lamp的镜像,使用时就不需要指定端口,所以加不加端口这里还不是很确定。

然后--link webapp1:webapp1是将前面容器再命名为webapp1在容器连接上,然后将宿主机的80端口映射到tutum/haproxy的80端口,这样外界访问的80端口的流量就被haproxy按照域名进行分流了。

最后为了试验效果,需要运行容器apache2的web服务,前面默认创建是关闭的。

那么首先需要进入容器,首先查看容器的id

docker ps

然后通过

docker exec -it [容器ID] /bin/bash

要进去以后,然后启用

/etc/init.d/apache2 restart

创建了一个实例以后,进入之后,在/var/www/html下,修改index主页为

<!DOCTYPE html>
<html>
<head>
<meta charset="UTF-8">
<title> 域名1 </title>
</head>
<body>
<p> 域名1 </p>
</body>
</html>

域名1与域名2的两个容器分别修改,这样实验可以看出效果,然后阿里云里面的域名服务还需要将购买的两个域名,直接映射到同一个IP地址上,这个在阿里云域名里面直接配置即可。

最后直接通过网页访问域名即可

 类似资料: