如何按域分隔流量?

时间:2013-09-09 01:36:53

标签: networking subdomain port haproxy

背景

我目前在LAN上运行多个低功耗服务器。他们都运行不同的服务,但其中一些是相似的。我还拥有3个域名,并为这些域名拥有许多子域名。

那么,你的问题是什么?

好吧,正如我之前所说,我的一些服务真的很相似,并且运行在同一个端口上(我有一个Owncloud服务器,我的网站托管在另一个上)。这意味着如果我想要 owncloud.mydomain.com 去我的Owncloud服务器,并且 www.mydoamain.com 去我的网络服务器,我有一点点一个问题。这两个子域都只是去我家,服务使用相同的端口。我无法真正区分每个子域的流量。

编辑:它还需要能够指导多种类型的流量,如SSH,HTTPS和FTP

可能的解决方案

我虽然只是在不同的端口上运行不同的服务,但并不是最佳的。这意味着看起来很奇怪,人们将更难以使用我的任何服务,而这通常是我不喜欢的事情。

我在同一台服务器上考虑过类似的服务,但它们是一些非常糟糕的服务器。我宁愿不必做任何类似的事情。此外,由于服务器有点旧,很高兴知道如果其中一个死了,至少我会有其他服务。我认为这个选项并不好。

最佳解决方案:我听说有一项服务具有我正在寻找的名为 haproxy 的确切功能。我唯一的问题是我不知道如何使用这项服务,我特别不知道如何得到我想要的用途。

我的最后一个问题

我很乐意让haproxy工作,我只需要知道如何按照我需要的方式设置它。如果有人有关于如何专门做我想要的教程的链接(我已经找到了如何让haproxy工作,而不是我想要的方式)那么我会非常感激。我会自己寻找,但我已经拥有,我甚至不知道该搜索什么。任何人都可以帮助我吗?

谢谢

2 个答案:

答案 0 :(得分:5)

创建自己的配置文件,例如haproxy.cfg,包含以下内容

defaults
 mode http

frontend my_web_frontend
  bind 0.0.0.0:80
  timeout client 86400000
  acl is_owncloud   hdr_end(host) -i owncloud.mydomain.com
  acl is_webserver  hdr_end(host) -i www.mydomain.com
  use_backend       owncloud      if is_owncloud
  use_backend       webserver     if is_webserver

backend owncloud
 balance source
 option forwardfor
 option httpclose
 timeout queue 500000
 timeout server 500000
 timeout connect 500000
 server server1 10.0.0.25:5000 weight 1 maxconn 1024 check inter 10000

backend webserver
 balance source
 option forwardfor
 option httpclose
 timeout queue 500000
 timeout server 500000
 timeout connect 500000
 server server1 10.0.0.30:80 weight 1 maxconn 1024 check inter 10000

然后在你的一台服务器上运行haproxy。

./haproxy -f ~/haproxy.cfg

将所有域和子域指向此计算机。他们将根据配置进行路由。

答案 1 :(得分:0)

您只需要一个IP地址,但需要正确配置虚拟主机。此链接提供Ubuntu虚拟主机配置的分步详细信息。这是最简单的方法,如果你坚持使用你的个人网络,其他人都会同意它是最便宜的。

https://www.digitalocean.com/community/articles/how-to-set-up-nginx-virtual-hosts-server-blocks-on-ubuntu-12-04-lts--3