2013-04-30 57 views
0

我想配置HAproxy在一臺服務器上運行轉發請求到一些應用程序我已經運行在appfog,但它已停止工作。我檢查了我的配置,但我無法發現問題。反向代理與haproxy不轉發主機

我懷疑主機信息沒有被正確轉發,因爲當我進入我送到domain1.app.com上appfog的domain1.com但是服務器拋出一個404

這是我的配置文件 -

global 
     maxconn 4096 
     user  haproxy 
     group  haproxy 
     daemon 
     log  127.0.0.1 local0 info 
     log  127.0.0.1 local1 notice 

defaults 
     log  global 
     mode http 
     option httplog 
     option dontlognull 
     option originalto 
     option forwardfor 
    stats enable 
    stats auth domain1:xxxxxx 
     option httpclose 
     retries 3 
     option redispatch 
     maxconn  2000 
     contimeout  5000 
     clitimeout  50000 
     srvtimeout  50000 

backend domain1_at_appfog 
     reqirep ^Host:\ domain2.com Host:\ domain2.web.app.com 
     server appfog1 domain2.web.app.com:80 

backend domain2_at_appfog 
     reqirep ^Host:\ domain1.com Host:\ domain1.app.com 
     server appfog2 domain1.app.com:80 

backend local_host_site 
     server this1 127.0.0.1:8080 

frontend superliciousLove *:80 
     acl www_domain1 hdr_dom(host) -i www.domain1.com 
    acl local_host url_sub www2 
    use_backend domain1_at_appfog if www_domain1 
     use_backend local_host_site if local_host 
     default_backend domain1_at_appfog 

回答

1

根據所提供的例子,如果是準確的,那麼問題就在這裏:

backend domain1_at_appfog 
    reqirep ^Host:\ domain2.com Host:\ domain2.web.app.com 
    server appfog1 domain2.web.app.com:80 

你的ACL是檢查www.domain1.com和路由s到backend domain1_at_appfog。但是,您正在替換domain2.com而不是domain1.com,並且appfog只會看到domain1.com而不是重新映射的主機名。

如果需要後臺支持多個域,你可以改變你的reqirep使用與appfog主機,以取代所有匹配的主機:

backend domain1_at_appfog 
    reqirep ^Host: Host:\ domain1.web.app.com 
    server appfog1 domain1.web.app.com:80 

backend domain2_at_appfog 
    reqirep ^Host: Host:\ domain2.app.com 
    server appfog2 domain2.app.com:80