Web-Server

代理域路由

  • July 22, 2011

我正在嘗試設置 haproxy 以根據 http 請求中使用的子域路由到後端。例如,我有一個在埠 8000 上執行的正常 Web 伺服器和一個等待在同一 IP 地址上的埠 8001 上執行的 websocket 連接的應用程序伺服器。我現在希望,如果使用者點擊 app.mydomain.com:80,他被重定向到埠 8001,如果他點擊 www.mydomain.com(或任何其他子域),他被重定向到埠 8000 上的網路伺服器。

我想出了一個我認為應該完成的簡單配置(它鬆散地基於這個問題):

frontend all 0.0.0.0:80
 timeout client    86400000
 acl aclMS1 hdr_dom(host) -i app
 use_backend   beMS1   if aclMS1
 default_backend   beWEB

backend beMS1
 timeout server 86400000
 server srvMS1 localhost:8001 maxconn 200 check

backend beWEB
 server webserver localhost:8000 maxconn 200 check

但是,這似乎不起作用。我總是在埠 8000 上訪問我的網路伺服器。我做錯了什麼?

我想出瞭如何讓它工作。我錯過了模式 http 選項。我的配置現在看起來像這樣,就像一個魅力:

defaults
 mode http
 timeout server 50000ms
 timeout server 50000ms
 timeout server 50000ms

frontend all 0.0.0.0:80
 timeout client    86400000
 acl aclMS1 hdr_dom(host) -i app
 use_backend   beMS1   if aclMS1
 default_backend   beWEB

backend beMS1
 timeout server 86400000
 server srvMS1 localhost:8001 maxconn 200 check

backend beWEB
 server webserver localhost:8000 maxconn 200 check

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