Linux

設置多個 webapp 以使用單個 IP 響應多個域

  • February 3, 2012

我有兩個 rails webapps,我已經配置了一個 webapp 來響應多個域。我通過將 nginx 中的相應伺服器塊設置為預設值來做到這一點。

現在,我什至想為自定義多個域發出其他 webapp 程序請求,有沒有辦法使用具有單個 IP 地址的機器來做到這一點?(我知道我可以添加一個額外的 IP 地址並讓其他 webapp 監聽這個,但我的伺服器在 EC2 上,所以我不能添加更多 IP。)

這兩個 webapp 都知道它們應該響應哪些域,並且有很多域。此外,這些 webapp 需要響應的域也會發生變化。所以我不能在 nginx 配置中對它們進行硬編碼。我的伺服器有 Ubuntu 10.04。

我對此進行了一些研究,我認為 HAProxy 可能能夠進行這種路由。HAProxy ACL 是否可以訪問 redis 之類的東西來查找 http 請求的目的地?

我不知道 haproxy 的這種特定功能,但是,haproxy 確實允許:

  1. 從文件中讀取的 ACL:acl host_list_a hdr_beg(host) -f /etc/haproxy/hostsA
  2. 用於重新載入配置haproxy -f haproxy.cfg -p /var/run/haproxy-private.pid -sf $(</var/run/haproxy-private.pid)

因此,您可能可以設置/etc/haproxy/hostA為主機名列表。當您添加主機名時,執行重新創建該文件的命令(或類似的東西,也許該文件與資料結構相關聯),然後執行 haproxy 重新載入。

話雖這麼說,這感覺有點笨拙,經常以自動方式重新載入負載平衡器感覺有點容易出錯 - 所以值得弄清楚這是否真的是你需要做的。如果是這樣,並且你做了這樣的事情,你應該確保編寫大量的錯誤檢查和自我修復。

引用自:https://serverfault.com/questions/355881