设置多个Web应用程序,使用一个IP来响应多个域

我有两个rails webapps,我已经configuration了一个webapp来响应多个域。 我通过将nginx中相应的服务器块设置为默认值来完成此操作。

现在,我甚至想要为其他webapp进程请求定制多个域, 有没有办法使用单个IP地址的机器来做到这一点? (我知道我可以添加一个额外的IP地址,并让其他webapp监听,但我的服务器是在EC2上,所以我不能添加更多的IP地址。)

这两个webapps都知道他们应该回应哪个域名,并且有很多域名。 而且,这些web应用程序需要响应的域将会改变。 所以我不能在nginxconfiguration中对它们进行硬编码。 我的服务器有Ubuntu 10.04。

我已经研究了一下,我认为HAProxy可以做这种路由。 HAProxy ACL可以访问类似redis的东西来查找http请求的目的地吗?

我不知道haproxy的这种特定的function,但是,haproxy确实允许:

  1. 从文件读取ACL: acl host_list_a hdr_beg(host) -f /etc/haproxy/hostsA
  2. 重新加载configurationhaproxy -f haproxy.cfg -p /var/run/haproxy-private.pid -sf $(</var/run/haproxy-private.pid)

因此,您可以将/etc/haproxy/hostA为主机名列表。 当你添加一个主机名,运行一个命令重新创build该文件(或类似的东西,也许文件绑定到一个数据结构),然后做一个haproxy重新加载。

这就是说,这感觉有点不好意思,经常以自动方式重新加载负载均衡器感觉有点容易出错 – 所以有必要弄清楚这是否真的是你需要做的。 如果是这样,而且你做了这样的事情,你应该确保编程了很多错误检查和自我修复。